如何获取Enumerable.Repeat方法的当前迭代

时间:2013-10-01 15:22:40

标签: c# .net ienumerable

拥有此代码:

   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中设置当前循环索引?

2 个答案:

答案 0 :(得分:12)

您可以改为使用Enumerable.Range

int count = 10;
List<MyObject> objects =  Enumerable.Range(0, count)
     .Select(i => new MyObject { Iteration = i })
     .ToList();

答案 1 :(得分:1)

如果要获取当前项的序数,一种方法是使用公开索引的Select overload。然后,您可以创建类似匿名类型的内容来保存原始可枚举的内容(在本例中为您的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的替代方案会更合适(虽然理论上这也可以)。