我有两个列表,一个列表有一些记录(未知的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条件。
答案 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