如何生成Linq查询时的where条件 Expression 语句
1个回答
展开全部
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();
//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();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询