Я искал способ преобразовать каждый элемент объекта IEnumerable
во что-то еще с помощью функции сопоставления (совместимым с Linq способом), но я ничего не нашел.
Для (очень простого) примера он должен уметь делать что-то вроде
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
Но я ничего не нашел. Я имею в виду, что довольно просто написать метод расширения, который выполнит это (в основном, все, что для этого требуется, - это обернуть источник Enumerator
в новый класс, а затем написать немного шаблонного кода для делегирования ему вызовов), но я ожидал этого быть довольно элементарной операцией, и писать ее самому похоже на изобретение колеса - я не могу избавиться от ощущения, что может быть встроенный способ, который я должен использовать, и я просто был слишком слеп, чтобы увидеть это .
Итак ... есть ли в Linq что-то, что позволяет мне делать то, что я описал выше?
Ответы:
Вы можете просто использовать
Select()
метод расширения:Или в синтаксисе LINQ:
источник
Select()
не обязательно будет выполняться, пока оно не будет перечислено. Не то чтобы это была отличная идея, но могут быть ситуации, когда вам может потребоваться добавить,ToList()
чтобы заставить его оценить весь список.Вы ищете,
Select
что можно использовать для преобразования \ проецирования входной последовательности:источник