我是EF/Linq- to -SQL的新手。我之前读过,IQueryable比IEnumerable更有好处,因为它做的是惰性评估。关于下面这个简单的例子:
var records = db.Employees.Where(x => x.EmployeeID == "3" );
if (records.Any())
{
var topRecord = records.First();
}IQueryable表达式是否被计算了两次?一次检查结果集中的任何元素,一次检索第一个元素?如果是这样,有没有更有效的方法来执行这样的select?
发布于 2013-03-20 22:54:49
是的,在这种情况下,查询将执行两次:第一次是针对Any,然后是针对First。
您可能会改用FirstOrDefault:
var topRecord = db.Employees.FirstOrDefault(x => x.EmployeeID == "3" );
// topRecord will be null if there's no match
if (topRecord != null)
{
...
}https://stackoverflow.com/questions/15526940
复制相似问题