.NET 3.5 SP1 引入 let 關鍵字,允許在查詢運算式中引入範圍變數儲存子查詢結果,類似「查詢內的區域變數」,大幅改善巢狀子查詢的可讀性。
var query = from num in numbers
select num * (from n in numbers
where n % 2 == 0
select n).Count();
var query = from num in numbers
let evenNumbers = from n in numbers
where n % 2 == 0
select n
select num * evenNumbers.Count();
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var query = from num in numbers
let evenNumbers = from n in numbers
where n % 2 == 0
select n
select num * evenNumbers.Count();
foreach (var item in query)
Console.WriteLine(item); // 輸出 5, 10, 15, 20, 25, 30, 35, 40, 45
Console.Read();
}
let 變數可在 where/orderby/select 多處引用。
let本質是編譯器語法糖,編譯為SelectMany+ 透明識別項,不改變查詢語意。