Welcome

首页 / 软件开发 / C# / Linq学习(5) 集合操作

Linq学习(5) 集合操作2010-07-12 博客园 飘遥(周振兴)本篇介绍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: 两个集合的所有元素的集合。