2015-09-23 38 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

謝謝!!!!! –