Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中较短的删除查询_C#_Linq - Fatal编程技术网

C# LINQ中较短的删除查询

C# LINQ中较短的删除查询,c#,linq,C#,Linq,下面是使用linq的删除查询代码。但这感觉像是一个漫长的方法?。有没有其他方法可以做到这一点 var ListOfData = (from a in db.Table1 join b in db.Table2 on a.Table1Id equals b.Table2Id where a.Table1Id == (param) select a) .ToList(); foreac

下面是使用linq的删除查询代码。但这感觉像是一个漫长的方法?。有没有其他方法可以做到这一点

var ListOfData = (from a in db.Table1 
                  join b in db.Table2 on a.Table1Id equals b.Table2Id  
                  where a.Table1Id == (param) select a)
                  .ToList();

foreach(var item in ListOfData )
{
    var DelRecord = (from a in db.Table1 
                     join b in db.Table2 on a.Table1Id equals b.Table2Id 
                     where a.Table1Id == item.TableId select a)
                    .FirstOrDefault();

    db.Table1.DeleteObject(DelRecord);
    db.SaveChanges();
  }

您可以删除第二个查询,因为您已经拥有所需的数据。

如果您使用的是EntityFramework6,那么他们引入了
RemoveRange()
方法

var ListOfData = (from a in db.Table1 
                  join b in db.Table2 on a.Table1Id equals b.Table2Id 
                  where a.Table1Id == (param) select a)
                  .ToList();

db.Table1.RemoveRange(ListOfData);
db.SaveChanges();

对我来说还是一样的对吧?。。并且使用了一个关于EF6的长代码。显然是“。很好+1我没有
删除工具
。如何检查我使用的EF?。应该写在你的App.config或Web.config中,或者检查你的软件包列表,或者打开NuGet和seach查找EntityFrameworkIts好了,现在感谢Chris为什么你没有创建正确的实体?如果它们是可连接的,那么您也可以在实体对象中创建一个链接,这样您就可以引用Table1.table2.what。您是否需要在每次迭代中保存您的更改?是否应该在Code Review SE论坛上进行[移植]?您可以使用Removate而不是DeleteObject。此外,DelRecord的意义何在?你不能每次迭代都删除“item”吗?
var ListOfData = (from a in db.Table1 
                  join b in db.Table2 on a.Table1Id equals b.Table2Id 
                  where a.Table1Id == (param) select a)
                  .ToList();

db.Table1.RemoveRange(ListOfData);
db.SaveChanges();