我们一般说的 LINQ 是指 LINQ 表达式,详见 LINQ 步步学 ,但除了表达式以外,LINQ 查询操作更方便,凡是实现了接口 IEnumerable<T> 或 IQueryable<T> 的,都可以用 LINQ 查询操作。
方法一览
int[] arr = { 1,2,3,7,8,9,6,5,4 };
Response.Write(arr.Count() + "<br>"); // 元素数量,这里为 9
Response.Write(arr.Sum() + "<br>"); // 元素总和,这里为 45
Response.Write(arr.Max() + "<br>"); // 元素最大值,这里为 9
Response.Write(arr.Min() + "<br>"); // 元素最小值,这里为 1
Response.Write(arr.Average() + "<br>"); // 元素平均值,这里为 5
Response.Write(arr.LongCount() + "<br>"); // 元素数量(以 System.Int64 返回),这里为 9
Response.Write(arr.Aggregate((s,m) =>((s < 3) ? 0 : s) + ((m % 3 == 0) ? m : 0)) + "<br>"); // 自定义聚合计算,这里为 18
Response.Write(arr.Count() + "<br>"); // 元素数量,这里为 9
Response.Write(arr.Sum() + "<br>"); // 元素总和,这里为 45
Response.Write(arr.Max() + "<br>"); // 元素最大值,这里为 9
Response.Write(arr.Min() + "<br>"); // 元素最小值,这里为 1
Response.Write(arr.Average() + "<br>"); // 元素平均值,这里为 5
Response.Write(arr.LongCount() + "<br>"); // 元素数量(以 System.Int64 返回),这里为 9
Response.Write(arr.Aggregate((s,m) =>((s < 3) ? 0 : s) + ((m % 3 == 0) ? m : 0)) + "<br>"); // 自定义聚合计算,这里为 18
Aggregate
上面的 Lambda 表达式 (s,m) =>((s < 3) ? 0 : s) + ((m % 3 == 0) ? m : 0)。
表示对每个元素执行这个函数:执行第一个元素时,把第一个元素的值传给 s 和 m;执行后面的元素时,把上一个元素执行时的结果传给 s,把当前元素值传给 m。