C# LINQ中较短的删除查询
下面是使用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
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();