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...

另外,已在你的另一个提问链接回答过了。请参阅。

参考技术A Delete<TEntity,T>(T id,FuncEx delFun)...
.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表达式怎么封装的主要内容,如果未能解决你的问题,请参考以下文章

动态构建Lambda表达式实现EF动态查询

第十九节: 结合表达式目录树来封装EF的BaseDal层的方法

C#的Lamda表达式_匿名函数

c# Linq及Lamda表达式应用经验之 GroupBy 分组

C# Lamda 表达式 GroupBy实现数据统计分组

C# Lamda 表达式 GroupBy实现数据统计分组