如何生成Linq查询时的where条件 Expression 语句

 我来答
就烦条0o
2016-12-04 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
Type cType = typeof(T);

//Where条件需要一个 Expression<Func<TSource, bool>> predicate
// 我想要生成的形式为 o => o.key == key o=> o.A==B
// 构建 o=> o.A==B中的 参数o
ParameterExpression paramEx = Expression.Parameter(cType, "o");

// 构建 o=> o.A==B中的o.A o.ID
Expression equal = Expression.Property(paramEx, cType, onlyKey.Name);
//指定o=> o.A==B 中的参数 B
Expression right=Expression.Constant(key);
//指定o=> o.A==B中的 o.A==B
Expression fi = Expression.Equal(equal, right);

//获取lambda表达式 o=> o.A==B
Expression<Func<T, bool>> lambda = Expression.Lambda<Func<T, bool>>(fi, paramEx);
// Expression.Lambda<Func<T,bool>>(Body,参数o)

entity = db.BaseDbSet.Where(lambda).FirstOrDefault();
//entity = db.BaseDbSet.Where(o => o.key == key).FirstOrDefault();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式