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

Добавить один элемент несколько раз в тот же список

То, что я пытаюсь сделать, - добавить один элемент в список, несколько раз, не используя цикл.

Я собираюсь добавить 50 номеров в список и хочу, чтобы все эти числа были равны, скажем, 42. Я знаю, что могу просто создать небольшой цикл, который выполняется 50 раз и добавляет один и тот же элемент поверх и снова, как таковой;

List<int> listFullOfInts = new List<int>();
int addThis = 42;
for(int i = 0; i < 50; i++)
    listFullOfInts.Add(addThis);

То, что я пытаюсь сделать, - это что-то вроде:

listFullOfInts.AddRange(addThis, 50);

Или что-то похожее на это, по крайней мере, возможно, используя Linq? У меня есть смутное воспоминание о том, как это сделать, но я не могу его найти. Любые идеи?

4b9b3361

Ответ 1

Вы можете использовать Repeat:

List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList();

Демо

Если у вас уже есть список, и вы не хотите создавать новый с ToList:

listFullOfInts.AddRange(Enumerable.Repeat(42, 50));

Ответ 2

Вы не можете сделать это напрямую с LINQ, так как LINQ является свободным от побочных эффектов, но вы можете использовать часть того, что найдено в пространстве имен System.linq, для создания требуемого.

public static void AddRepeated<T>(this List<T> self,T item, int count){
  var temp = Enumerable.Repeat(item,count);
  self.AddRange(temp);
}

вы можете использовать это, как вы предлагаете в своем сообщении

listFullOfInts.AddRepeated(addThis, 50);