Подтвердить что ты не робот

Заполнить список <string> с тем же значением с LINQ

Я хочу заполнить List<string> тем же строковым значением для указанного количества раз.

В прямом С# это:

List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
    myList.Add("myString");
}

Можно ли это сделать с помощью LINQ?

4b9b3361

Ответ 1

Да, используйте Enumerable.Repeat:

var myList = Enumerable.Repeat("myString", 50).ToList();

или это:

var myList = new List<string>(Enumerable.Repeat("myString", 50));

Если у вас есть существующий список, к которому вы хотите добавить эти элементы, используйте это:

myList.AddRange(Enumerable.Repeat("myString", 50));

Обратите внимание, что это не совсем LINQ как таковой, но он использует методы расширения, которые были добавлены вместе с LINQ для поддержки нового синтаксиса. С помощью только LINQ (т.е. Синтаксиса "from... select" ) это немного отличается, тогда я бы сделал следующее:

var myList = (from idx in Enumerable.Range(0, 50) select "myString").ToList();

Однако я бы не сделал этого, вместо этого я бы использовал методы Enumerable.

Кроме того, если вы хотите создать разные строки, в зависимости от того, добавляется ли это первый, второй, третий и т.д., вы можете использовать Enumerable.Range вместо:

var myList = Enumerable.Range(0, 50).Select(idx => "myString#" + idx).ToList();

Создает список со строками myString#0, myString#1, myString#2,...

Ответ 2

Лучшим инструментом для задания является Enumerable.Repeat:

var myList = Enumerable.Repeat("myString", 50).ToList();

Ответ 3

var myList = Enumerable.Repeat("myString", 50).ToList();

Ответ 4

Попробуйте следующее:

Enumerable.Range(0, 50).Select(i => "myString").ToList()