我一直在寻找一种方法,使用映射函数(以Linq兼容的方式)将IEnumerable的每个元素转换为其他元素,但我还没有找到任何东西。
对于(非常简单的)示例,它应该能够执行类似
的操作IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
但我没有找到任何东西。我的意思是,编写一个完成它的扩展方法非常简单(基本上,它只需要将源枚举器包装到一个新类中,然后编写一些样板代码来委托调用它),但我希望如此这是一个相当基本的操作,自己编写感觉就像重新发明轮子一样 - 我无法摆脱可能存在我应该使用的内置方式的感觉,而我只是太盲目看不到它
所以... Linq中有什么东西允许我做我上面描述的吗?
答案 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());