Blu*_*ppy 6 c# linq ienumerable
我有一个包含大约80,000行的POCO类型的IEnumerable和一个包含行子集的数据库表(L2E/EF4),其中存在"错误/差异"(约5000行,但经常重复以提供约150个不同的行)项)
以下代码获取不同VSACode的"错误",然后尝试更新完整的结果集,更新JUST匹配的行...但它不起作用!
var vsaCodes = (from g in db.GLDIFFLs
select g.VSACode)
.Distinct();
foreach (var code in vsaCodes)
{
var hasDifference = results.Where(r => r.VSACode == code);
foreach (var diff in hasDifference)
diff.Difference = true;
}
var i = results.Count(r => r.Difference == true);
Run Code Online (Sandbox Code Playgroud)
在此代码之后,i = 0
我也尝试过:
foreach (var code in vsaCodes)
{
results.Where(r => r.VSACode == code).Select(r => { r.Difference = true; return r; }).ToList();
}
Run Code Online (Sandbox Code Playgroud)
如何更新"结果"以仅设置匹配的差异属性?
Jon*_*eet 11
假设results
只是一个查询(您没有显示它),每次迭代它时都会对它进行评估.如果该查询每次都创建新对象,您将看不到更新.如果它返回对相同对象的引用,那么你会.
如果更改results
是一个物化查询结果-例如通过添加ToList()
到年底-然后再遍历results
不会发出新的查询,你会看到你的变化.
归档时间: |
|
查看次数: |
4126 次 |
最近记录: |