C#通过调用函数实例化列表

时间:2016-09-19 19:28:01

标签: c# linq

是否有更简单的方法来编写以下内容:

var voucherCodes = new List<string>();

for (int i = 0; i < 10; i++)
{
    voucherCodes.Add(GenerateCode(VoucherCodeLength));
}

我想做这样的事情:

// ten items would be added to the list so long as GenerateCode returns a string
var voucherCodes = new List<string>(GenerateCode(VoucherCodeLength), 10);

当然,我可以创建自己的函数,但我想知道是否有某些东西已经存在。

2 个答案:

答案 0 :(得分:4)

我不能说它是否更好,但你可以使用下面的LINQ&#34; one-liner&#34;:

var voucherCodes = Enumerable.Range(0, 10).Select(_ => GenerateCode(VoucherCodeLength)).ToList();

或专门针对此调用,如果VoucherCodeLength是常量(或不更改且没有副作用),则更短:

var voucherCodes = Enumerable.Repeat(VoucherCodeLength, 10).Select(GenerateCode).ToList();

答案 1 :(得分:2)

另一种方式

var voucherCodes = Enumerable.Repeat(GenerateCode(VoucherCodeLength), 10).ToList();