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, что позволяет мне делать то, что я описал выше?

734   2  

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

    Ничего не найдено.