我一直在寻找一种使用映射函数(以 Linq 兼容的方式)将 IEnumerable
的每个元素转换为其他元素的方法,但我没有找到任何东西。
对于一个(非常简单的)例子,它应该能够做类似的事情
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
但是我还没有找到任何东西。我的意思是,编写实现此目的的扩展方法非常简单(基本上,它所需要的只是将源 Enumerator
包装到一个新类中,然后编写一些样板代码来委托(delegate)对它的调用),但我原以为这是一个相当基本的操作,自己编写它感觉就像重新发明轮子——我无法摆脱这样一种感觉,即可能有一种我应该使用的内置方式,而且我我们只是太盲目了,看不到它。
那么... 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();
关于C#/林克 : Apply a mapping function to each element in an IEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187409/