2010-09-05 54 views

回答

4

LINQ中的術語「運算符」與C#語言運算符的正常含義(+,& &等)中的「運算符」不同。 LINQ standard query operators只是LINQ方法,預計可以通過大多數提供者(以及通過LINQ到特定對象提供的那些方法)使用。

是你實際上詢問有關使用類似這樣的查詢表達式的利弊:

var query = from item in source 
      where item.SomeProperty == 5 
      select item.OtherProperty; 

VS的「流暢接口」或正常的擴展方法的「點號」呼籲:

var query = source.Where(item => item.SomeProperty == 5) 
        .Select(item => item.OtherProperty); 

?如果是這樣,我可以更詳細地寫一下,但基本上:

  • 通常沒有性能差異,因爲查詢表達式被編譯器有效地轉換爲後者的語法。偶爾會有重載,你可以使用點符號,這些不能通過查詢表達式獲得,你也許可以通過這種方式提高效率。
  • 運營商,其使用多個代表(如JoinGroupBy往往是在查詢表達式語法
  • 更具可讀性如果您的查詢會使用大量的查詢表達式語法透明標識符,點號很可能是醜陋
  • 如果您的查詢是非常簡單(只需一凡和/或選擇),然後點符號很可能是簡單的
  • 如果您使用它通過查詢表達式不受支持的方法(例如Count()ToList()等),然後有將括號內的查詢表達式可能很難看
+0

是的,這就是我的意思。查詢表達式與點符號的比較。 – DenaliHardtail 2010-09-06 14:59:22

+0

@斯科特:好吧...所以要點(實際上比我想要的更詳細)回答你的問題?還有什麼你想知道的嗎? – 2010-09-06 15:13:18

+0

已回答的問題。謝謝! – DenaliHardtail 2010-09-06 15:18:51