在调试我的代码时,我开始知道如果你使用Linq查询来分配任何属性,那么每当使用该属性时,每次都会执行查询。所以如果你做的事情如下:
Myprop= MyList.where(p=>p.Stauts=="ABKI BAAR ..");
因此,在您的代码中,无论何时执行foreach(var prop in Myprop)',
Myprop.ToList()。count()`或任何使用Myprop,都会导致每次执行linq查询。
每次执行linq查询都不是一个坏主意,特别是当我不修改MyList
时?
答案 0 :(得分:2)
您可以在表达后调用ToList
来解决此问题:
Myprop = MyList.where(p=>p.Stauts=="ABKI BAAR ..").ToList(); // or .ToArray()
这样它会立即执行Linq查询,并且每次都不会执行查询,因为现在你有了一个列表。
这显然不会考虑以后对源列表的更改。
答案 1 :(得分:1)