Select与SelectMany的区别

Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值。

Select() 为每个源值生成一个结果值。因此,总体结果是一个与源集合具有相同元素数目的集合。与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合。作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列。

string[] text ={ "Albert was here", "Burke slept late", "Connor is happy" };

var tokens = text.Select(s => s.Split(‘‘));

foreach (string[] line in tokens)

  foreach (string token in line)

      Console.Write("{0}.", token);

string[] text ={ "Albert was here", "Burke slept late", "Connor is happy" };

var tokens = text.SelectMany(s => s.Split(‘‘));

foreach (string token in tokens)

  Console.Write("{0}.", token);

下面两个插图演示了这两个方法的操作之间的概念性区别。在每种情况下,假定选择器(转换)函数从每个源值中选择一个由花卉数据组成的数组。

下图描述 Select() 如何返回一个与源集合具有相同元素数目的集合。

下图描述 SelectMany() 如何将中间数组序列串联为一个最终结果值,其中包含每个中间数组中的每个值。

时间: 2024-10-17 10:01:21

Select与SelectMany的区别的相关文章

Select()和SelectMany()的区别

Select与SelectMany的区别 Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值. Select() 为每个源值生成一个结果值.因此,总体结果是一个与源集合具有相同元素数目的集合.与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合.作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列.然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列. string[] t

【LINQ】Select与SelectMany的区别

Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值.Select() 为每个源值生成一个结果值.因此,总体结果是一个与源集合具有相同元素数目的集合.与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合.作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列.然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列. private class NamedEntity { publ

IEnumerable.Select和SelectMany的区别

IEnumerable<T>在Windows Phone 7的程序上很常用,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单迭代,下面主要分析一下 IEnumerable<T>.Select和IEnumerable<T>.SelectMany这两个方法的区别. IEnumerable<T>.Select  将序列中的每个元素投影到新表中. IEnumerable<T>.SelectMany 将序列的每个元素投影到 IEnume

linq里的select和selectmany操作

Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值.Select() 为每个源值生成一个结果值.因此,总体结果是一个与源集合具有相同元素数目的集合.与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合.作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列.然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列. 下面两个插图演示了这两个方法的操作之间的概念性区别.在每种情况下

linq里的select和selectmany操作 投影运算

原文地址:https://msdn.microsoft.com/zh-cn/library/bb546168.aspx#Mtps_DropDownFilterText 投影运算 其他版本 投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性. 通过使用投影,您可以构建依据每个对象生成的新类型. 您可以映射属性,并对该属性执行数学函数. 还可以在不更改原始对象的情况下映射该对象. 下面一节中列出了执行投影的标准查询运算符方法. 方法 方法名 说明 C# 查询表达式语法 Vis

linq读书笔记3-操作符之select与selectmany

linq对数据的查询方式的表达形式主要有两种: var demo =from p in pList where p.id=*** select p; var demo =pList.where(p=>p.id=***) select p; 以上是linq最近常见的两种表达形式.linq支持多种操作符的操作,下面对主要的常操作符进行说明: select 与selectmany select操作符声明: public static IEnumerable<s> select<T,S&g

[转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于

ThinkPHP中实例化对象M()和D()的区别,select和find的区别

原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如

ThinkPHP中实例化对象M()和D()的区别,select和find的区别 【转】

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于