为了在linq表达式中定义变量,可以使用let关键字。通常这样做是为了存储中间子查询的结果,例如:
int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var aboveAverages = from number in numbers let average = numbers.Average() let nSquared = Math.Pow(number,2) where nSquared > average select number; Console.WriteLine("The average of the numbers is {0}.", numbers.Average()); foreach (int n in aboveAverages) { Console.WriteLine("Query result includes number {0} with square of {1}.", n, Math.Pow(n,2)); }
输出:
平均值是4.5。
查询结果包括3的平方,为9。
查询结果包括4的平方,为16。
查询结果包括5的平方,为25。
查询结果包括6的平方,为36。
查询结果包括7的平方,为49。
查询结果包括8的平方,为64。
查询结果包括9的平方,为81。
观看演示