Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C/Linq:对IEnumerable中的每个元素应用映射函数?_C#_Linq - Fatal编程技术网

C# C/Linq:对IEnumerable中的每个元素应用映射函数?

C# C/Linq:对IEnumerable中的每个元素应用映射函数?,c#,linq,C#,Linq,我一直在寻找一种方法,以Linq兼容的方式使用映射函数将IEnumerable的每个元素转换为其他元素,但我没有找到任何方法 对于一个非常简单的示例,它应该能够执行以下操作 IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 }; IEnumerable<string> strings = integers.Transform(i => i.ToString()); 但我什么也没找到。

我一直在寻找一种方法,以Linq兼容的方式使用映射函数将IEnumerable的每个元素转换为其他元素,但我没有找到任何方法

对于一个非常简单的示例,它应该能够执行以下操作

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
但我什么也没找到。我的意思是,编写一个扩展方法非常简单,基本上,它只需要将源枚举器包装到一个新类中,然后编写一点样板代码来委派对它的调用,但我本以为这是一个相当基本的操作,我自己写这本书感觉就像是重新发明了轮子——我无法摆脱一种感觉,那就是可能有一种我应该使用的内在方式,而我只是太盲目了,看不见它

所以。。。Linq中是否有允许我执行上述操作的功能?

您正在寻找的可用于转换\投影输入序列的功能:

IEnumerable<string> strings = integers.Select(i => i.ToString());
您可以只使用扩展方法:

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Select(i => i.ToString());
或使用LINQ语法:

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };

var strings = from i in integers
              select i.ToString();

啊!!我知道一定有办法。我想有点老旧的森林/树木视觉遮挡问题:请注意,如果地图有副作用,您可能会遇到麻烦,因为Select的主体在枚举之前不一定执行。这并不是一个好主意,但在某些情况下,您可能需要添加ToList来强制它计算整个列表。调用一种形式“linq查询语法”和另一种形式“linq方法语法”不是更正确吗?实际上这两种形式都是linq语法类型,第一个称为方法语法,第二个称为查询语法。阅读更多:可能相关:。公平地说,它应该与SQL相匹配,后者是常用术语。这很烦人。我正在努力学习函数式编程。。。但必须放弃10年的LINQ条款。我需要一份翻译指南。我想知道谷歌翻译能帮上什么忙。。。