本篇介紹Linq的集合操作,繼續使用《Linq 學習(3) 語法結構》中介紹的數據源。
Count/LongCount
Count/LongCount 返回結果集中元素的數量,返回類型分別為int/long。
原型為:
public static int Count<TSource>(this IEnumerable<TSource> source[, Func<TSource, bool> predicate])
姓名長度大於四個字符的學生的數量:
var result = (from student in DataSource.Students
select student).Count(stu => { return stu.Name.Length > 4; }); // result: 1
Sum/Min/Max/Average
分別返回結果集元素或其屬性的和、最小值、最大值、平均值。
Sum:返回集合元素的和,參與計算的集合元素必須為基本的值類型或可空類型。
計算總分:
var result = (from score in DataSource.Scores
select score).Sum(score => { return score.Value; });
Min/Max:結果集元素的最大值或最小值,要求集合元素實現IComparable<T> 或 IComparable接口。
選擇最高成績:
var result = (from score in DataSource.Scores
select score).Max(score => { return score.Value; }); // result: 96
Average:返回集合元素的平均值,參與計算的集合元素必須為基本的值類型或可空類型。
計算平均成績:
var result = (from score in DataSource.Scores
select score).Average(score => { return score.Value; }).ToString("F2"); // result: 75.23
Union
聯合兩個擁有相同或相似元素的集合,不去掉重復元素。
Union原型為:
public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)
var result = DataSource.Students.Union(DataSource.Students2);
// result: 兩個集合的所有元素的集合。