如何将列表中的数据添加到新的[]

时间:2014-11-18 16:11:33

标签: c#

我有一个包含字符串的列表o

    "Hist 2368#19:00:00#20:30:00#Large Conference Room",
    "Hist 2368#09:00:00#10:30:00#Large Conference Room",

我想将这些字符串添加到此:

var lines = new[]
{  
    "Meeting#19:00:00#20:30:00#Conference", 
};

如何使用列表o中的数据并将其插入lines

6 个答案:

答案 0 :(得分:5)

数组是自然的,固定长度的。您需要创建一个新数组,并将其分配给lines

lines = lines.Concat(o).ToArray();

可替换地,

lines = o.AddRange(lines).ToArray();

更新:修正了愚蠢的错误。

答案 1 :(得分:1)

由于Lines已经是一个数组,因此您需要先将值合并到列表中:

foreach (var item in lines)
    o.Add(item);

然后将o更改为数组:

o.ToArray();  ///returns String[] with all three values.

您也可以像其他人指出的那样使用.concat(),内部也会这样做。

答案 2 :(得分:1)

要考虑的另一件事是lines变量的Array(T)类型是固定大小,因此您必须分配足够的空间来容纳所有数据或将数据复制到新构造中

如果您为lines分配了足够的空间来容纳所有数据,那么它看起来像这样:

var o = new List<string>
{
    "Hist 2368#19:00:00#20:30:00#Large Conference Room",
    "Hist 2368#09:00:00#10:30:00#Large Conference Room",
};
var lines = new string[3] { "Meeting#19:00:00#20:30:00#Conference", null, null };
// Copy the data from o to the end of lines
o.CopyTo(lines, 1); // Start a 1 to not overwrite the existing data

另见:

否则,如果您要将两个不同的数据源汇集到新构造中,那么我建议使用Concat方法。这将合并IEnumerable(T)类型,您可以使用ToArrayToList为数据提供正确的容器。

var o = new List<string>
{
    "Hist 2368#19:00:00#20:30:00#Large Conference Room",
    "Hist 2368#09:00:00#10:30:00#Large Conference Room",
};

var lines = new[]
{  
    "Meeting#19:00:00#20:30:00#Conference", 
}.Concat(o).ToArray();

请确保您知道container you want to use

答案 3 :(得分:0)

您可以使用Enumerable.Concat连接值:

lines = O.Concat(lines).ToArray();

答案 4 :(得分:0)

只需

lines = lines.Concat(o).ToArray();

答案 5 :(得分:0)

试试这个:

        List<string> myList = new List<string>()
        {
            "My First String in List",
            "My Second String in List"
        };

        string[] myArray = new string[] { "My Array First String" };

        List<string> myArrayList = new List<string>();
        foreach (var item in myArray)
        {
            myArrayList.Add(item);
        }
        foreach (var item in myList)
        {
            myArrayList.Add(item);
        }
        foreach (var item in myArrayList)
        {
            Console.WriteLine(item);
        }
        Console.Read();