2015-09-23 37 views
-1

Linq查询的性能是否有下面的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

为什么不试试? – HimBromBeere

回答

2

不,他们是同样的确切查询。

请注意查询不会执行,直到您执行ToList方法。

+0

谢谢Yacoub –

0

您可以直接链接大多数LINQ查询,因为大多数LINQ查询都是延迟执行的。这种表达式的结果是一种查询计划,直到您致电ToListToArray才执行。

说了这些之后,你的两个查询是完全一样的。

有关此主题的更多信息,请阅读deferred execution and lazy evaluation

+0

谢谢!!!!! –