C# / Linq: применить функцию сопоставления к каждому элементу в IEnumerable?
Я искал способ преобразовать каждый элемент IEnumerable во что-то еще, используя функцию отображения (совместимым с Linq способом), но я ничего не нашел.
для (очень простой) пример, он должен быть в состоянии сделать что-то вроде
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
но я ничего не нашел. Я имею в виду, что довольно просто написать метод расширения, который выполняет это (в основном, все, что требуется, - это обернуть исходный перечислитель в новый класс и затем пишу немного шаблонного кода для делегирования вызовов ему), но я ожидал бы, что это будет довольно элементарная операция, и написание ее само по себе похоже на изобретение колеса - я не могу избавиться от ощущения, что может быть встроенный способ, который я должен использовать, и я просто был слишком слеп, чтобы видеть это.
Так... есть ли что-то в LINQ, что позволяет мне делать то, что я описал выше?
2 ответов:
вы можете просто использовать
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который может быть использован для преобразования\проекта входной последовательности:IEnumerable<string> strings = integers.Select(i => i.ToString());
Comments