我想List<string>
用相同的字符串值填充 a 指定的次数。
在直接的 C# 中,它是:
List<string> myList = new List<string>();
for (int i = 0; i < 50; ++i)
{
myList.Add("myString");
}
可以用 LINQ 做到这一点吗?
是的,使用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
, ...的列表
这项工作的最佳工具是Enumerable.Repeat
:
var myList = Enumerable.Repeat("myString", 50).ToList();
var myList = Enumerable.Repeat("myString", 50).ToList();
试试这个:
Enumerable.Range(0, 50).Select(i => "myString").ToList()