使用LINQ将List <string>填充为相同的值

Sim*_*der 23 c# linq list

我想List<string>用指定次数的相同字符串值填充a .

直接C#是:

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

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

ang*_*son 40

是的,使用Enumerable.Repeat:

var myList = Enumerable.Repeat("myString", 50).ToList();
Run Code Online (Sandbox Code Playgroud)

或这个:

var myList = new List<string>(Enumerable.Repeat("myString", 50));
Run Code Online (Sandbox Code Playgroud)

如果您要将这些元素添加到现有列表,请使用以下命令:

myList.AddRange(Enumerable.Repeat("myString", 50));
Run Code Online (Sandbox Code Playgroud)

请注意,这本身并不完全是LINQ,但它使用与LINQ一起添加的扩展方法来支持新语法.随着只是 LINQ(即"从......选择"语法),这是一个有点不同的,那么我会做到这一点:

var myList = (from idx in Enumerable.Range(0, 50) select "myString").ToList();
Run Code Online (Sandbox Code Playgroud)

但是,我实际上不会这样做,我会改用它的方法Enumerable.

此外,如果要创建不同的字符串,取决于它是否是您要添加的第一个,第二个,第三个等项目,您可以使用Enumerable.Range:

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

将创建一个字符串列表myString#0,myString#1,myString#2,...

  • 哇,哇,哇!看起来我有充分的理由停止使用`Enumerable.Range(0,qty).Select(n =>"myString")`now ... :) (3认同)
  • 那太棒了 (2认同)

Jon*_*Jon 17

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

var myList = Enumerable.Repeat("myString", 50).ToList();
Run Code Online (Sandbox Code Playgroud)


Mat*_*son 9

var myList = Enumerable.Repeat("myString", 50).ToList();
Run Code Online (Sandbox Code Playgroud)

  • Darn,忍者@Jon;) (3认同)