LINQ to SQL 中可以使用的LINQ函式
文/黃忠成
我們知道,任何LINQ Expression及LINQ函式呼叫,在LINQ To SQL架構中,最終都會被轉成SQL指令送往資料庫執行,而LINQ To SQL支援了全部的LINQ Expression及部份函式,這意味著你只需熟悉LINQ To Objects,就已經取得了進入LINQ To SQL的入場門票。
但請注意,LINQ To SQL與LINQ To Objects畢竟有些許不同,從LINQ Expression角度上看來,能下在LINQ To Objects的LINQ Expression,就能下在LINQ To SQL,例如JOIN、GROUP、Multi Select等等。但能在LINQ To Objects呼叫的函式,不見得就能下在LINQ To SQL。
除了【極意之道-.NET Framework 3.5資料庫開發聖典】一書中提及的分辨何者能於LINQ To SQL中呼叫的LINQ函式之大方向外,我將較細節,能運行於LINQ To SQL的LINQ函式列示於下:
Select
、SelectMany
|
Distinct
|
Join
、GroupJoin
|
Concat
|
DefaultIfEmpty
|
Union
|
OfType
、Cast
|
Intersect
|
Where
|
Except
|
First
、FirstOrDefault
|
Any
|
Single
、SingleOrDefault
|
All
|
Count
、LongCount
|
Sum
、Min、Max、Average
|
GroupBy
|
OrderBy
、OrderByDescending、ThenBy、ThenByDescending
|
ToList
、ToArray、AsEnumerable
|
Skip
、Take、Contains
|
未列於表中的,如Last、LastOrDefault、ElementAt、ElementAtOrDefault等函式,目前未在支援範圍。
由於MSDN 中對此並無詳細說明(我是找不到啦...),這些資訊是我從Reflector中解出來的.