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中解出来的.