Linq学习(4) 投影、筛选和排序

这里简单介绍Linq的投影、筛选和排序子句。

Select

select 在一个集合序列按给定的条件进行投影,select 可以返回组合的筛选结果,返回匿名类型,对返回结果进行操作,返回组合的子查询结果等等。

select 的方法定义原形为:

public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)

该扩展方法是在Enumerable类型中定义的。

// 数据源的类型的属性

var result = from student in DataSource.Students
       where student.Name.Length > 3
       select student.Name;

// 数据源类型筛选后的结果

var result = from student in DataSource.Students
       where student.Name.Length > 3
       select student;

// 新类型

var result = from student in DataSource.Students
       where student.Name.Length > 3
       select new Student { Name = student.Name, StudentID = student.StudentID };

// 匿名类型

var result = from student in DataSource.Students
       where student.Name.Length > 3
       select new { Name = student.Name, StudentID = student.StudentID };

// 对返回结果进行操作

var result = from student in DataSource.Students
       where student.Name.Length > 3
       select student.ToString();

由Select方法原型可看出,返回结果为:IEnumerable<T>类型。

SelectMany

SelectMany定义原型为:

public static IEnumerable<TResult> SelectMany<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector)

通过原型可以看出,筛选结果的每一个元素类型都应该实现IEnumerable<T>接口。

string实现了IEnumerable<T>接口,可以构造这样的场景:查询组成学生姓名的所有字符序列。

var result = DataSource.Students.SelectMany(str => str.Name);

等价的Select 子句为:

var result = from student in DataSource.Students
       from ch in student.Name
       select ch;

可以认为SelectMany是将序列的每个元素投影到 IEnumerable<(Of <(T>)>) 并将结果序列合并为一个序列。

时间: 2025-01-21 00:07:39

Linq学习(4) 投影、筛选和排序的相关文章

Linq学习笔记

写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些兴趣,所以打算整理点东西出来跟大家一起做个分享. 什么是Linq LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并

一起谈.NET技术,Linq学习笔记

写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些兴趣,所以打算整理点东西出来跟大家一起做个分享. 什么是Linq LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并

用好Excel 2007的筛选和排序功能

很多人在用上Excel 2007之后可能都会惊叹于Excel 2007功能的强大,对于普通用户来说,Excel 2007最为强大的便是其数据分析能力.如果只是使用表格来记录一些简单的数据,那么使用Word 2007的表格功能就可以完成,完全没有必要请Excel 2007这位数据分析大师出马.不过数据分析也是一件说着容易做起来难的事情,这里就学习一下,如何利用筛选和排序功能,从最基本的数据分析工作做起. 筛选! 给数据"过筛子" 股市终于大涨啦,郁闷已久的股民终于看到曙光了!在众多被&q

Excel2007的筛选和排序功能的使用

  Excel 2007的筛选和排序功能的使用,使用word处理表格,数据较少的情况下还可以,数据量稍微大一点,还是得请Excel 2007这位表格专家出马.在数据量多的情况下,如何快速找到自己想要的数据又成了问题,筛选+排序,绝对是个找数据的能手. 很多人在用上Excel 2007之后可能都会惊叹于Excel 2007功能的强大,对于普通用户来说,Excel 2007最为强大的便是其数据分析能力.如果只是使用表格来记录一些简单的数据,那么使用Word 2007的表格功能就可以完成,完全没有必要

Linq学习(6) Group &amp;amp; Join

本篇介绍Linq的Group和Join操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. Group Group是进行分组操作,同SQL中的Group By类似. 原型如下: public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>( this IEnumerable<TSource> source, Func<TSource, TKe

Linq学习(5) 集合操作

本篇介绍Linq的集合操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. Count/LongCount Count/LongCount 返回结果集中元素的数量,返回类型分别为int/long. 原型为: public static int Count<TSource>(this IEnumerable<TSource> source[, Func<TSource, bool> predicate]) 姓名长度大于四个字符的学生的数量: var

重新应用Excel筛选和排序 或清除筛选

一旦对Excel单元格区域或表列中的数据进行了筛选或排序,就可以重新应用筛选或排序以获得最新的结果,或者清除筛选以重新显示所有数据. 了解有关重新应用筛选和排序的详细信息 要确定是否应用了筛选,请注意列标题中的图标: ·下拉箭头 表示已启用但是未应用筛选. 提示 当您在已启用但是未应用筛选的列的标题上悬停时,会显示一个"(全部显示)"的屏幕提示. ·"筛选"按钮 表示已应用筛选. 提示 当您在已筛选列的标题上悬停时,会显示一个关于应用于该列的筛选的屏幕提示,如&qu

PHP实现产品列表分类筛选与排序的项目实例

一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ProductController 中的一个函数,用于简单的查询,比如199元专区就可以使用 getTypeSimPro('price=199'); /**简单的筛选条件分类产品,单表查询 * @param string $sql 单表查询的SQL * @param int $countPerPa

JavaScript学习笔记之数组随机排序_javascript技巧

推荐阅读:JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组的增.删.改.查 JavaScript中提供了sort()和reverse()方法对数组项重新排序.但很多时候这两个方法无法满足我们实际业务的需求,比如说扑克牌游戏中的随机洗牌. 在这篇文章一起来学习如何完成上面这个示例的效果,以及一些有关于数组随机排序的相关知识. 在网上查了一下有关于数组随机排序的相关资料,都看到了Math.random()的身影.打开浏览器控制器,输入: Math.random() 从图