使用if条件时将两个列表数据添加到数组中

时间:2019-09-18 06:11:28

标签: c# .net

我有两个列表,一个列表有一些记录(未知的rec编号,但不超过13条记录),第二个列表只有空值。我在这两个列表上使用if条件。并希望将这两个列表添加到一个数组中。我正在使用此代码:

for (int i=0; i>12; i++)
{
    List<string> excList = new List<string>();
    //added column from table, which can varies
    excList.Add((string)column.ColumnName);
    string[] excelList = new string[] {  };
    List<string> stack = Enumerable.Range(excList.Count, 13)
                .Select(z => string.Empty)
                .ToList<string>();
    if (excList.Count > i)
    {
        excelList =  excList.ToArray();
    }
    if (excList.Count <= i)
    {
         excelList = stack.ToArray();
    }
    eCol0 = excelList[0].ToString();
    //show first value, after adding two list in excelList
    response.Write(eCol0);
}

使用此代码,当第二个条件开始并且列表(excList)添加到数组(excelList)中时,excelList仅显示第二个列表数据。

我想将这两个列表(excList和stack)插入arrayList(范围为13)。但是这两个列表必须在if条件的基础上添加,因为我在上面的代码中使用if条件。

3 个答案:

答案 0 :(得分:0)

永远不要向字符串数组excelList添加任何内容。您总是为其分配新的。

使用数组也不是添加值的最佳方法,因为您需要事先知道数组的大小。

如果您确实想要最后一个数组同时包含两个结果,则应执行以下操作:

        List<string> excList = new List<string>();

        ... fill your excList here and initialize the stack list with whatever you need ...

        excList.AddRange(stack);

        string[] excelList = excList.ToArray();

编辑:正如评论所提到的那样,您的问题有点令人困惑,您正在使用一个没有明确原因的大循环,并且添加空值也没有意义...所以我试图从本质上弄清楚你想知道

编辑:2 等待一秒钟,我想您最后想要一个字符串数组,大小为13,其中元素至少为string.empty

            List<string> excList = new List<string>();
            //added column from table, which can varies
            excList.Add((string)column.ColumnName);

            string[] excelList = new string[13];

            for (int i = 0; i < excList.Count; i++)
            {
                excelList[i] = excList[i];
            }

            for (int i = excList.Count; i < 13; i++)
            {
                excelList[i] = string.Empty;
            }

不需要外部循环

答案 1 :(得分:0)

您已经编写了许多令人困惑的代码,它们可能会更加紧凑。

通过这些建议,我了解到您有一个N个字符串的列表,其中N可以在1到13之间,并且您想将其转换为包含所有列表项的13个字符串的数组,并在末尾输入空字符串

因此,清单:

telnet lb_endpoint 80 

成为一个数组:

"a", "b", "c"

如果您希望一个衬板为您生成13个字符串的列表,请从最多13个字符串的列表"a", "b", "c", "", "", "", "", "", "", "", "", "", ""

x

如果您的列表string[] arrayOf13 = x.AddRange(Enumerable.Repeat("", 13 - x.Count)).ToArray(); 的未知数大于13:

x

或者不使用for或while循环使用LINQ:

string[] arrayOf13 = x.AddRange(Enumerable.Repeat("", 13)).Take(13).ToArray();

如果您希望字符串为null而不是空,则只需声明一个大小为13(全为null)的数组,然后使用for(; x.Count < 13; x.Add("")) string[] arrayOf13 = x.ToArray(); while(x.Count < 13) x.Add("")); string[] arrayOf13 = x.ToArray();

Array.CopyTo()

答案 2 :(得分:0)

您的目标似乎是获取一个由13个字符串组成的数组(excelList,其中每个元素默认为eigher string.Empty或某个源列表中的相应(相同索引)元素({{ 1}})。

因此,一种短代码解决方案是首先创建一个由13个元素组成的数组,并以'string.Empty'进行初始化,然后将源列表元素复制到最多13个元素中:

excList