如何填充列表<list <t>&gt; 100个没有循环的空List <t>?</t> </list <t>

时间:2013-11-08 23:03:49

标签: c# linq generics

我有以下列表:

List<List<BaseTile>> retVal = new List<List<BaseTile>>();

我需要用100个空List<BaseTile>填充它(然后我会用我需要的东西填充它们)

这样做的方法就是:

for (i=0; i<100; i++)
    retval.add(new List<BaseTile>());

我很确定在没有循环的情况下有一些LINQ技巧可以做到,我很好奇它是什么。我试过了:

retVal.AddRange(Enumerable.Repeat<List<BaseTile>>(new List<BaseTile>(),100));

但遗憾的是它没有做我想要的,因为列表中的所有列表都引用了相同的列表(这很有意义,因为这是重复的意思:))

2 个答案:

答案 0 :(得分:6)

我看了一眼

for(i=0;i<100;i++)
  retval.add(new List<BaseTile>());

直接理解它

Enumerable.Range(1, 100).Select(_ => new List<T>())

不明显。

K.I.S.S。

答案 1 :(得分:3)

Enumerable.Range(1, 100)可以“伪造”for循环。然后,您可以Select离开生成的IEnumerable<int>,忽略索引。

var result = Enumerable.Range(1, 100).Select(_ => new List<BaseTile>()).ToList();

如果您只想以其他方式使用100个空List<T>个对象(即不在List<List<T>>中),请省略ToList()并自行枚举。