c# ef框架的删除的lamda表达式怎么封装
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# ef框架的删除的lamda表达式怎么封装相关的知识,希望对你有一定的参考价值。
如图代码,linq语句where里面我不知道写什么,如果是p=>p.ID==1 这种样子的我会实现,但是我现在不确定是根据什么字段来查询数据,所以我想把它封装起来,就有了如图的方法,但是不知道where该怎么写,请教各位了。
// 使用Lambda表达式树构建动态查询public virtual void Delete<TEntity>(string field, string id) where TEntity : class
ParameterExpression pe = Expression.Parameter(typeof(TEntity), "m");
MemberExpression left = Expression.Property(pe, field);
// 具体类型根据实际情况,这里假设是int,So,强制转换int。
ConstantExpression right = Expression.Constant(Convert.ToInt32(id));
BinaryExpression binary = Expression.Equal(left, right);
var predicate = Expression.Lambda<Func<TEntity, bool>>(binary, new[]pe);
TEntity entity = dbSet.Cast<TEntity>().Where(predicate).FirstOrDefault();
// ...TO DO SOMETHING...
另外,已在你的另一个提问链接回答过了。请参阅。
.Where(delFun)....
应该这样追问
如图,它的参数好像是Func的,FuncEx是什么类型
FuncEx是你自己定义的delegate啊
C# Lamda 表达式 GroupBy实现数据统计分组
List<scoreruleA> list = new List<scoreruleA>()
new scoreruleA() id=1,scoreitem="语文",score=92 ,
new scoreruleA() id=1,scoreitem="语文",score=90 ,
new scoreruleA() id=2,scoreitem="语文",score=95 ,
new scoreruleA() id=3,scoreitem="数学",score=21 ,
new scoreruleA() id=3,scoreitem="数学",score=34 ,
new scoreruleA() id=6,scoreitem="数学",score=45 ,
;
1.实现按照 学科 分数 分组。
var aa = list.GroupBy(a => a.scoreitem).Select(g => (new aabb=g, year = g.Key, avg = g.Average(m => m.score), max = g.Max(n => n.score), count = g.Count() ));
2.实现按照 班级 学科 分数 分组。
var bb = list.GroupBy(a => new a.id, a.scoreitem ).Select(g => (new aabb = g, year = g.Key, avg = g.Average(m => m.score), max = g.Max(n => n.score), count = g.Count() ));
以上是关于c# ef框架的删除的lamda表达式怎么封装的主要内容,如果未能解决你的问题,请参考以下文章
第十九节: 结合表达式目录树来封装EF的BaseDal层的方法