我有一个方法接收 N,即我要创建的对象的数量,我需要返回 N 个对象的列表。
目前我可以用一个简单的循环来做到这一点:
private static IEnumerable<MyObj> Create(int count, string foo)
{
var myList = new List<MyObj>();
for (var i = 0; i < count; i++)
{
myList .Add(new MyObj
{
bar = foo
});
}
return myList;
}
我想知道是否还有其他方法,也许可以使用 LINQ 来创建此列表。
我试过:
private static IEnumerable<MyObj> CreatePaxPriceTypes(int count, string foo)
{
var myList = new List<MyObj>(count);
return myList.Select(x => x = new MyObj
{
bar = foo
});
}
但这似乎确实填充了我的列表。
我尝试将 select 更改为 foreach,但它是一样的。
我意识到该列表具有计数的容量,而 LINQ 没有找到任何要迭代的元素。
myList.ForEach(x => x = new MyObj
{
bar = foo
});
是否有正确的 LINQ 运算符可用于使其工作?还是我应该坚持使用循环?
最佳答案
您可以使用Range
来创建一个序列:
return Enumerable.Range(0, count).Select(x => new MyObj { bar = foo });
如果你想创建一个List
,你必须ToList
它。
不过请注意,它(可以说)是一个非显而易见的解决方案,所以暂时不要放弃创建列表的迭代方式。
关于c# - 创建 N 个对象并将它们添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122528/