使用LINQ </string>填充List <string>和相同的值

时间:2013-06-05 08:28:35

标签: c# linq list

我希望使用相同的字符串值填充List<string>指定的次数。

直接C#是:

List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
    myList.Add("myString");
}

是否可以使用LINQ执行此操作?

4 个答案:

答案 0 :(得分:40)

是的,请使用Enumerable.Repeat

var myList = Enumerable.Repeat("myString", 50).ToList();

或者这个:

var myList = new List<string>(Enumerable.Repeat("myString", 50));

如果您想要添加这些元素的现有列表,请使用:

myList.AddRange(Enumerable.Repeat("myString", 50));

请注意,这本身并不完全是LINQ,但它使用与LINQ一起添加的扩展方法来支持新语法。使用 LINQ(即“from ... select”语法),它有点不同,然后我会这样做:

var myList = (from idx in Enumerable.Range(0, 50) select "myString").ToList();

但是,我不会实际这样做,我会使用Enumerable的方法。

此外,如果您要创建不同的字符串,根据您要添加的第一个,第二个,第三个等项目,您可以使用Enumerable.Range代替:

var myList = Enumerable.Range(0, 50).Select(idx => "myString#" + idx).ToList();

将创建一个包含字符串myString#0myString#1myString#2,...

的列表

答案 1 :(得分:17)

这项工作的最佳工具是Enumerable.Repeat

var myList = Enumerable.Repeat("myString", 50).ToList();

答案 2 :(得分:9)

var myList = Enumerable.Repeat("myString", 50).ToList();

答案 3 :(得分:4)

试试这个:

Enumerable.Range(0, 50).Select(i => "myString").ToList()