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

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

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

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());

但我什么都没找到。我的意思是,编写一个扩展方法来实现这一点非常简单(基本上,它所需要的只是将源代码 Enumerator封装到一个新的类中,然后编写一些样板代码来委托给它) ,但是我本以为这是一个相当基本的操作,而且自己编写它感觉像是重造轮子——我无法动摇这种感觉,即可能存在一种我应该使用的内置方式,只是我太盲目了,看不到它。

那么... 在 Linq 有什么东西可以让我做我上面描述的事情吗?

164343 次浏览

你正在寻找 Select,它可以用来转换项目的输入序列:

IEnumerable<string> strings = integers.Select(i => i.ToString());

只需使用 Select()扩展方法:

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();