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

时间:2011-08-25 08:41:49

标签: c# linq

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

对于(非常简单的)示例,它应该能够执行类似

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

但我没有找到任何东西。我的意思是,编写一个完成它的扩展方法非常简单(基本上,它只需要将源枚举器包装到一个新类中,然后编写一些样板代码来委托调用它),但我希望如此这是一个相当基本的操作,自己编写感觉就像重新发明轮子一样 - 我无法摆脱可能存在我应该使用的内置方式的感觉,而我只是太盲目看不到它

所以... Linq中有什么东西允许我做我上面描述的吗?

2 个答案:

答案 0 :(得分:141)

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

答案 1 :(得分:24)

您正在寻找可用于转换\投射输入序列的Select

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