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


157

我有以下几点:

  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

3
堆满的

2
您做错了,localStrings = new List<string>;应该放在for循环之前
Wassim AZIRAR 2014年

1
瓦西姆(Wassim),我认为这就是他区分本地和全球的原因。localStrings在for循环作用域内是局部的,GlobalStrings在全局作用域内。
Dagrooms 2015年

这是一个糟糕的示例(它会引起Wassim的完全错误的评论),因为显然您可以选择Addto GlobalStrings而不是to localStrings。FWIW您循环仅运行9次。最好是for (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter

Answers:




22

尝试AddRange方法:

GlobalStrings.AddRange(localStrings);

虽然正确,但此答案现在与Lee的答案相同。
心教堂

9

与Linq

var newList = GlobalStrings.Append(localStrings)

3
追加似乎不存在?您是否有指向MSDN文档的链接?
波德

2
也许您的意思是Concat ...尽管那将意味着大量复制,并且很好地说明了如何使用LINQ。
Jim Balter

5

这是我的示例:

    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"});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.