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

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

对于一个(非常简单的)例子,它应该能够做类似的事情

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

但我没有find任何东西。 我的意思是,编写一个扩展方法是非常简单的(基本上,它只需要将源枚举器封装到一个新的类中,然后编写一些委托给它的样板代码),但是我期望这是一个相当基本的操作,写自己感觉就像重新发明轮子 – 我不能动摇这种感觉,可能有一个我应该使用的内置方式,我只是太盲目,看不到它。

所以… Linq有什么东西可以让我做上面描述的吗?

您可以使用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(); 

您正在寻找Select哪个可用于转换\投影input序列:

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