将一个列表的内容追加到另一个列表中 C#

208

我有以下内容:

  1. 一个名为 GlobalStrings 的主要列表
  2. 另一个名为 localStrings 的列表

例如,在循环中:

List<string> GlobalStrings = new List<string>(); 
List<string> localStrings = new List<string>();
for(x=1;x<10;x++)
{
    localStrings.Add("some value"); 
    localStrings.Add("some value");
}
// Want to append localStrings to GlobalStrings as easily as possible

4
堆栈溢出总是很棒……好问题…… - Sangram Nandkhile
2
你做错了,localStrings = new List<string>; 应该放在 for 循环之前。 - Wassim AZIRAR
1
Wassim,我认为这就是他区分本地和全局的原因;localStrings 局限于 for 循环范围内,GlobalStrings 在全局范围内。 - Dagrooms
这只是一个糟糕的例子(会引起像Wassim那样完全错误的评论),因为显然你可以直接将字符串添加到GlobalStrings而不是localStrings。并且顺便说一句,你的循环只运行了9次。更好的方法是 for (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* 将它们附加到GlobalStrings */} - Jim Balter
11年后... - Chris Catignani
7个回答

331

61

虽然正确,但这个答案现在已经成为李的答案的重复。 - Cœur

22

尝试使用AddRange方法:

GlobalStrings.AddRange(localStrings);

虽然正确,但这个答案现在已经成为李的答案的重复。 - Cœur

8

使用 Linq

var newList = GlobalStrings.Append(localStrings)

3
“Append”似乎不存在?你有MSDN文档的链接吗? - Pod
5
也许你的意思是 Concat...不过那会意味着需要大量复制,这个例子很好地说明了如何使用LINQ。 - Jim Balter

6

这里是我的例子:

    private List<int> m_machinePorts = new List<int>();

    public List<int> machinePorts
    {
        get { return m_machinePorts; }
    }

    Init()
    {
        // Custom function to get available ethernet ports
        List<int> localEnetPorts = _Globals.GetAvailableEthernetPorts();

        // Custome function to get available serial ports
        List<int> localPorts = _Globals.GetAvailableSerialPorts();

        // Build Available port list 
        m_machinePorts.AddRange(localEnetPorts);
        m_machinePorts.AddRange(localPorts);
     }

2
如果您想要“简洁”:)
List<string>GlobalStrings = new List<string>(); 

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});

-3

如果你想要变得“简洁” :)

GlobalStrings.AddRange(localStrings);

5
在发布你自己的答案之前,请先查看现有的答案--其他人在十多年前已经发布过这个完全相同的答案好几次了。请重新审视已有的答案,确保不重复发表相同的内容。 - Daniel Mann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接