Я хочу заполнить List<string> тем же строковым значением для указанного количества раз.
В прямом С# это:
List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
myList.Add("myString");
}
Можно ли это сделать с помощью LINQ?
Я хочу заполнить List<string> тем же строковым значением для указанного количества раз.
В прямом С# это:
List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
myList.Add("myString");
}
Можно ли это сделать с помощью LINQ?
Да, используйте 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,...
Лучшим инструментом для задания является Enumerable.Repeat:
var myList = Enumerable.Repeat("myString", 50).ToList();
var myList = Enumerable.Repeat("myString", 50).ToList();
Попробуйте следующее:
Enumerable.Range(0, 50).Select(i => "myString").ToList()