2013-07-25 55 views
0

Linq to SQL有點新。我看到一些與下面的示例代碼類似的代碼,並立即想知道兩者之間的區別。起初,我認爲它是相同的,但後來想知道這是個人開發者偏好獲得相同產出還是錯過了某些東西?Linq to SQL代碼區別

我甚至不知道我可以搜索,看看是否有其他人遇到同樣的問題,所以很感謝任何解釋。

請注意該代碼可能不是100%準確,但應該給你什麼,我問

Public Function GetCustomerByID(Byval CustID as Integer) As IQueryable(Of Customer) 
Return c From myDataContext.Customers Where c.ID = CustID Select c 
End Function 

Public Function GetCustomerByID(Byval CustID as Integer) As IQueryable(Of Customer) 
Return myDataContext.Customers(Function(c) c.ID = CustID) 
End Function 
+0

差異是沒有,在第二個Lambda表達式(或如何在vb中調用它)被使用 – wudzik

+2

你確定第二個沒有'Where'方法調用:'返回myDataContext.Customers.Where(函數(c) c.ID = CustID)'? – MarcinJuraszek

+0

@MarcinJuraszek好點:)但如果有一些'哪裏'他們會是相同的:) – wudzik

回答

0

的想法,他們基本上是在功能上是相同的,一個簡單的使用的LINQ(語言集成查詢)正確,另一個使用公開的擴展方法;擴展方法主要是便利的方法(想想速記查詢)來做你必須用Linq手工操作的東西,但顯然即使是更簡單的方法也存在,而且這些方法往往會經常使用。

所以,有時候,任用法偏好,並使用一個在其他時間或其他客觀比較合適,比如說,易用性,方便維護等

值得一提的是,你的榜樣似乎不合法;正如馬辛指出的那樣,你的第二個例子並不表示我使用的擴展方法:請參閱myDataContext.Customers.Where(Function(c) c.ID = CustID