I have an IEnumerable of a POCO type containing around 80,000 rows
and a db table (L2E/EF4) containing a subset of rows where there was a “an error/a difference” (about 5000 rows, but often repeated to give about 150 distinct entries)
The following code gets the distinct VSACode’s “in error” and then attempts to update the complete result set, updating JUST the rows that match…but it doesn’t work!
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);
After this code, i = 0
I’ve also tried:
foreach (var code in vsaCodes)
{
results.Where(r => r.VSACode == code).Select(r => { r.Difference = true; return r; }).ToList();
}
How can I update the “results” to set only the matching Difference property?
Assuming
resultsis just a query (you haven’t shown it), it will be evaluated every time you iterate over it. If that query creates new objects each time, you won’t see the updates. If it returns references to the same objects, you would.If you change
resultsto be a materialized query result – e.g. by addingToList()to the end – then iterating overresultswon’t issue a new query, and you’ll see your changes.