asp.net 更新Lambda表达式中的语句

dy1byipe  于 2023-01-10  发布在  .NET
关注(0)|答案(1)|浏览(112)

我想把下面的表达式转换成lambda表达式:

Update [ActivityTask] Set GroupID = "1" Where ActivityID = aid AND TaskID = tid ;

GroupID =(从其他地方获取的int,未硬编码,我将其作为1作为示例)
我真的被困在如何继续这个...我得到了插入方法:

public void Insert(ModelSQL.ActivityTask act)
{
    context.ActivityTasks.AddObject(act);
}

想知道它的工作原理是否与顶部相同,所以我尝试了这个:

public void Update(int gid , int aid , int tid)
    {
        Update<ActivityTask>( new { x => x.GroupID == gid }).Where(x => x.activityID == aid && x.taskID == tid);
    }

但它给出了错误“不能将lambda表达式赋给匿名“,而且我也不能使用3个参数(3个整型)。

z9zf31ra

z9zf31ra1#

如果context.ActivityTasks为列表,则

public void Update(int gid , int aid , int tid)
{
    List<ActivityTask> found = context.ActivityTasks.FindAll(item => item.activityID == aid && item.taskID == tid);
    found.ForEach(item  => { item.GroupID = gid; });
}

实体框架多重更新参见Entity Framework Extensions (Multiple entity updates)它是开源的。这允许使用lambda表达式进行更新操作。

using System.EntityFramework.Extensions.ObjectQueryExtensions; //Include this package
{
  ....

   public void Update(int gid , int aid , int tid)
   {
     context.ActivityTasks.Update(t => new ActivityTask() { GroupID = gid }, 
                                  t => t.activityID == aid && t.taskID == tid);     
   }
  ....
}

相关问题