C# 如何使用LINQ-to-SQL基于非主键字段项的集合删除多行?

C# 如何使用LINQ-to-SQL基于非主键字段项的集合删除多行?,c#,.net,linq,linq-to-sql,collections,C#,.net,Linq,Linq To Sql,Collections,我有这个专栏 id int主键, 代码int不为空 我想删除所有代码等于 IEnumerable<int> someEnumerable 但对我来说,这会导致: System.Data.Linq.dll中发生类型为“System.StackOverflowException”的未处理异常 在我看来,你的代码应该可以工作。您可能希望尝试缩小异常是来自实体选择还是实际删除。尝试向查询中添加ToList(),这将强制它运行选择逻辑,然后查看在选择期间或删除时是否引发异常。在我看来,您的

我有这个专栏

id int主键,
代码int不为空
我想删除所有代码等于

IEnumerable<int> someEnumerable
但对我来说,这会导致:

System.Data.Linq.dll中发生类型为“System.StackOverflowException”的未处理异常


在我看来,你的代码应该可以工作。您可能希望尝试缩小异常是来自实体选择还是实际删除。尝试向查询中添加ToList(),这将强制它运行选择逻辑,然后查看在选择期间或删除时是否引发异常。

在我看来,您的代码应该可以工作。您可能希望尝试缩小异常是来自实体选择还是实际删除。尝试向查询中添加ToList(),这将强制它运行选择逻辑,然后查看异常是在选择过程中还是在删除过程中引发的。

如前所述,它是由Linq错误引起的,已在.NET 4.0上更正

Contains现在检测自引用IQueryable,不会导致堆栈溢出

来自某地,某地:

在.NET 3.5中解决这个问题:当使用“自动生成值”=True时,必须将“延迟加载”设置为False,否则会出现递归错误

如前所述,它是由Linq错误引起的,已在.NET4.0上更正

Contains现在检测自引用IQueryable,不会导致堆栈溢出

来自某地,某地:

在.NET 3.5中解决这个问题:当使用“自动生成值”=True时,必须将“延迟加载”设置为False,否则会出现递归错误


2个问题:哪行代码导致StackOverflowException?someEnumerable是内存中的序列还是来自数据库的序列?2个问题:哪行代码导致StackOverflowException?someEnumerable是内存序列,还是来自数据库?
var result = db.table.Where(a => someEnumerable.Contains(a.code));
db.table.DeleteAllOnSubmit(result);
db.SubmitChanges();