因此,在LINQPad中使用foreach()
循环运行一些大型查询时,我遇到了一些OutOfMemory异常。我的一位同事(现在正在休假)建议我将using()
放在foreach()
内,以便每次循环时都创建一个新的表引用(并处置)。 。但是,我忘记了正确的方法,而且在Google上似乎找不到任何有用的东西。
示例:我有一个客户表,所以我的foreach()
通常是这样的:
foreach(var customer in listOfCustomerIds) {
var sum = Customer
.FirstOrDefault(x => x.Id == customer)
.Jobs
.Where(x => x.Deleted == null)
.Where(x => x.CustomerJobRelations.Any())
.Sum(x => x.CustomerJobRelations.Count());
}
但是,正如我所说,这给了我一些OutOfMemory异常。相反,他希望我做这样的事情:
foreach(var customer in listOfCustomerIds) {
using(var customerTable = new TypedDataContext<Customer>()) {
var sum = customerTable
.FirstOrDefault(x => x.Id == customer)
.Jobs
.Where(x => x.Deleted == null)
.Where(x => x.CustomerJobRelations.Any())
.Sum(x => x.CustomerJobRelations.Count());
}
}
语法错误,但是我100%确信他使用了TypedDataContext。但是,他的设置方式却完全被人们遗忘了。有人知道吗?