我希望使用相同的字符串值填充List<string>
指定的次数。
直接C#是:
List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
myList.Add("myString");
}
是否可以使用LINQ执行此操作?
答案 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#0
,myString#1
,myString#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()