以下linq查询的性能是否存在差异:
var query = from q in this.context.SomeTable
where q.SomeId == SomeId
select new SomeViewModel
{
PrimaryAttr = q.PrimaryAttr;
Attribute1 = q.Attribute1,
Attribute2 = q.Attribute2,
Attribute3 = q.Attribute3
};
query = query.OrderByDescending(q => q.PrimaryAttr).Take(5).ToList();
如果我首先在同一行中过滤查询:
var query = (from q in this.context.SomeTable
where q.SomeId == SomeId
select new SomeViewModel
{
PrimaryAttr = q.PrimaryAttr;
Attribute1 = q.Attribute1,
Attribute2 = q.Attribute2,
Attribute3 = q.Attribute3
}).OrderByDescending(q => q.PrimaryAttr).Take(5).ToList();
答案 0 :(得分:2)
不,它们是完全相同的查询。
请注意,在执行ToList方法之前不会执行查询。
答案 1 :(得分:0)
您可以直接链接大多数LINQ查询,因为大多数LINQ查询都是延迟执行的。这种表达式的结果是一种查询计划,在您致电ToList
或ToArray
之前执行。
说完这两个问题完全相同。
有关此主题的更多信息,请阅读deferred execution and lazy evaluation