Ответ 1
Вы можете использовать Repeat
:
List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList();
Если у вас уже есть список, и вы не хотите создавать новый с ToList
:
listFullOfInts.AddRange(Enumerable.Repeat(42, 50));
То, что я пытаюсь сделать, - добавить один элемент в список, несколько раз, не используя цикл.
Я собираюсь добавить 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? У меня есть смутное воспоминание о том, как это сделать, но я не могу его найти. Любые идеи?
Вы можете использовать Repeat
:
List<int> listFullOfInts = Enumerable.Repeat(42, 50).ToList();
Если у вас уже есть список, и вы не хотите создавать новый с ToList
:
listFullOfInts.AddRange(Enumerable.Repeat(42, 50));
Вы не можете сделать это напрямую с 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);