2014-11-11 3 views
3

У меня есть список List<string> MyValues = new List<string>{};. В моей программе мне необходимо скопировать следующее:Ли LINQ позволяет упростить эту конструкцию?

MyValues.Add(MyFunc(1)); MyValues.Add(MyFunc(2)); ... MyValues.Add(MyFunc(20)); 

Определенно, я могу сделать это в цикле. Но я предполагаю, что должна быть построена LINQ, которая позволяет заполнять список одной простой конструкцией, заменяя этот цикл.

Может ли кто-нибудь предложить такую ​​конструкцию LINQ, которая заполнила бы мой список?

Большое спасибо!

+1

Хотя возможно, я не думаю, что это проще, чем 'for' цикла. Если вы хотите, чтобы ваш код был как можно более понятным, я бы не рекомендовал здесь никаких вспомогательных функций LINQ. – hvd

ответ

7

Вы можете упростить это с помощью Enumerable.Range:

List<string> myValues = Enumerable.Range(1, 20).Select(MyFunc).ToList(); 
4

Да, вы можете использовать Enumerable.Range для генерации всех чисел, а также Select для преобразования; и используйте AddRange, чтобы добавить все элементы в ваш список.

MyValues.AddRange(Enumerable.Range(1, 20).Select(i => MyFunc(i)));