linq学习:Linq 学习(5) 集合操作来源: 发布时间:星期五, 2009年1月9日 浏览:21次 评论:0
本篇介绍Linq集合操作继续使用Linq 学习(3) 语法结构中介绍数据源
Count/LongCount Count/LongCount 返回结果集中元素数量返回类型分别为/long 原型为: public Count<TSource>(this IEnumerable<TSource> source[, Func<TSource, bool> predicate]) 姓名长度大于 4个学生数量: var result = (from student in DataSource.Students 分别返回结果集元素或其属性和、最小值、最大值、平均值 Sum:返回集合元素和参和计算集合元素必须为基本值类型或可空类型 计算总分: var result = (from score in DataSource.Scores select score).Sum(score => { score.Value; }); Min/Max:结果集元素最大值或最小值要求集合元素实现IComparable<T> 或 IComparable接口 选择最高成绩: var result = (from score in DataSource.Scores Average:返回集合元素平均值参和计算集合元素必须为基本值类型或可空类型 计算平均成绩: var result = (from score in DataSource.Scores Union 联合两个拥有相同或相似元素集合不去掉重复元素 Union原型为: public IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) // result: 两个集合所有元素集合 Aggregate Aggregate是最灵活操作符有些前面Sum/Min/Max/Average不支持类型可以自己定义其实现 Aggregate原型为: public TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector) source 要聚合 IEnumerable<(Of <(T>)>) seed 累加器值 func 要对每个元素累加器 resultSelector 将累加器最终值转换为结果值 返回所有学生姓名串(相当于自定义Sum): var result = (from student in DataSource.Students 选择学生姓名(按串排序取最大相当于实现Max): var result = (from student in DataSource.Students 算分数平均值(返回Score对象相当于自定义Average): var collection = from score in DataSource.Scores Aggregate 可以灵活实现各种自定义功能 集合操作会影响Linq执行效率执行集合操作时会遍历甚至多次遍历集合元素;对Linq延迟执行也会变为立即执行后面介绍性能优化时会讨论 0
相关文章
读者评论发表评论 |
|