考虑下面的代码示例:
IEnumerable<Y> myEnumeration = *some linq stuff into a datatable*
If (myEnumeration.Count() > X)
{
foreach(Y bla in myEnumeration)
{
// do something
}
}
这将导致枚举2次吗?计数通话+ foreach?如果是这样,有什么办法可以避免枚举之一?
提前致谢
编辑了myEnumeration.Count-> myEnumeration.Count()(扩展方法)
最佳答案
我将这段代码放入LinqPad中,以显示生成的SQL:
IEnumerable<MyTable> myEnumeration = MyTable;
if (myEnumeration.Count() > 1)
{
foreach(MyTable bla in myEnumeration)
{
// do something
}
}
生成的SQL如下:
SELECT * FROM [MyTable] AS [t0]
GO
SELECT *
FROM [MyTable] AS [t0]
因此,是的,数据将从数据库中检索两次。
考虑
List<Y> myEnumeration = *some linq stuff into a datatable* **.ToList();**
关于c# - 枚举性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21302189/