8

有这个代码:

   return Enumerable.Repeat<MyClass>(new MyObject
   {   
     Iteration = // Get the current loop index 
   },
   10).ToList<MyClass>();

   public MyClass
   {
     public int Iteration {get;set;}
   }

如何Iteration使用该Enumerable.Repeat方法在属性中设置当前循环索引?

4

2 回答 2

14

您可以Enumerable.Range改用:

int count = 10;
List<MyObject> objects =  Enumerable.Range(0, count)
     .Select(i => new MyObject { Iteration = i })
     .ToList();
于 2013-10-01T15:25:07.193 回答
1

如果要获取当前项的序号,一种方法是使用暴露索引的Select 重载。然后,您可以创建类似匿名类型的东西来保存原始可枚举(在本例中为您的Repeat结果)和索引的内容:

var repeats = Enumerable.Repeat("Something", 10).Select((s, i) => new { s, i });

foreach (var rep in repeats)
    Console.WriteLine(rep.i + rep.s);

印刷:

0Something
1Something
...
9Something

我不确定你需要这个做什么。如果只是创建一个对象列表,那么 Tim 的替代方案会更合适(尽管理论上这也可以)。

于 2013-10-01T15:27:16.967 回答