Generally speaking, LINQ queries are executed when the application code processes
data (for instance, using a foreach or a for) or when certain methods are invoked
(ToList, ToArray, First, Single, and so on).
下面的方法将会查询两次数据库:
var result = LINQToEntitiesQuery;
foreach(var o in result)
{
...
}
foreach(var o in result)
{
...
}
为了避免这种情况引起的性能问题,这种情况下需要将数据提前ToList(),代码如下:
var orders = LINQToEntitiesQuery.ToList();
foreach(var o in orders)
{
...
}
foreach(var o in orders)
{
...
}