黑马程序员技术交流社区
标题: linq浅析4 这里文字比较多 笔墨多些 [打印本页]
作者: 祐掱緣 时间: 2013-10-10 16:55
标题: linq浅析4 这里文字比较多 笔墨多些
Six 投影运算投影是指将对象转换为一种新形式的操作,该形式通常只包含那些将随后使用的属性。通过使用投影,您可以构建依据每个对象生成新的类型。您可以映射属性,并对该属性执行数学函数,还可以在不更改原始对象的情况下映射该对象。
方法 | | | | |
Select | | | Enumerable.Select
Queryable.Select
| |
SelectMany | | | Enumerable.SelectMany
Queryable.SelectMany
| |
Select语法
List<string> words= new List<string>(){ "an", "apple","a", "day"};
var query = from wordin words
select word.Substring(0, 1);
foreach (string s in query)
Console.WriteLine(s);
Selectmany语法
List<string>phrases = new List<string>(){ "an apple a day", "the quick brown fox" };
var query = fromphrase in phrases
from word inphrase.Split(' ')
select word;
foreach (string s in query)
Console.WriteLine(s);
Select()和SelectMany()
Select() 和 SelectMany() 的工作都是依据源值生成一个或多个结果值。Select() 为每个源值生成一个结果值。 因此,总体结果是一个与源集合具有相同元素数目的集合。与之相反,SelectMany() 将生成单一总体结果,其中包含来自每个源值的串联子集合。作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。然后,SelectMany() 将串联这些可枚举序列以创建一个大的序列。
下面两个插图演示了这两个方法的操作之间的概念性区别。在每种情况下,假定选择器(转换)函数从每个源值中选择一个由花卉数据组成的数组。
下图描述 Select() 如何返回一个与源集合具有相同元素数目的集合。
file:///C:\Users\hang\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png
下图描述SelectMany() 如何将中间数组序列串联为一个最终结果值,其中包含每个中间数组中的每个值
file:///C:\Users\hang\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png
作者: 祐掱緣 时间: 2013-10-11 09:10
好的嗯额
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |