拥有此代码:
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
中设置当前循环索引?
答案 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的替代方案会更合适(虽然理论上这也可以)。