2009-07-06 80 views
1

看來有兩種方法構建查詢 - 或者使用查詢表達式:你如何建立你的LINQ查詢?

IEnumerable<Customer> result = 
         from customer in customers 
         where customer.FirstName == "Donna" 
         select customer; 

或使用擴展方法:

IEnumerable<Customer> result = 
      customers.Where(customer => customer.FirstName == "Donna"); 

你使用哪種?爲什麼?您認爲哪種方式在長期內更受歡迎?

+0

重複的http://stackoverflow.com/questions/630045/linq-dot-notation-vs-query-expression和http://stackoverflow.com/questions/1054965/when-to-use-lambda-expressions -in-lin-clause-in-linq和其他可能的。 – 2009-07-06 04:02:49

回答

1

在表達式語法中只有有限數量的操作可用,例如,Take()或First()僅在使用擴展方法時可用。

我個人更喜歡錶達式,如果所有必需的操作都可用,如果不是,那麼我回退到擴展方法,因爲我發現它們比lambda更容易閱讀。

看看這個答案,

Linq Extension methods vs Linq syntax

1

我使用的方法語法(幾乎)完全是因爲查詢語法有更多的限制。出於可維護性原因,我發現最好立即使用方法語法,而不是稍後轉換它,或者使用兩種語法的組合。

開始時讀起來可能有點難,但是一旦你習慣了,它就很自然。

0

我只使用方法語法。這是因爲我發現它的寫速度要快很多,而且我寫了大量的linq。我也喜歡它,因爲它更簡潔。如果在一個團隊中工作,那麼最好就哪一個是首選的風格達成共識,因爲混合這兩種風格是難以理解的。

Microsoft建議查詢語法。 「一般來說,我們推薦查詢語法,因爲它通常更簡單,更易讀」。 http://msdn.microsoft.com/en-us/library/bb397947.aspx

0

這取決於你和你的團隊發現更多的可讀性,我會根據具體情況選擇它。有些查詢在語法形式上可以更好地閱讀,並且還有一些以方法形式更好地閱讀。當然,還有一個寬泛的中間地帶,你不能說這種或那種方式,或者有些人喜歡這種方式和其他方式。

請記住,您可以將兩種形式混合在一起,使其更具可讀性。

我沒有理由懷疑任何一種形式在將來都會消失。