我有一个Array.It有10行。 我需要检查一下flg。如果flag的值为false,则转到第一个数组,如果它有标志为true则转到数组2.我尝试这样的事情。
if (lista2[i].FLG_FALHA == true)
{
listaInc[c] = lista2[i];
i++;
c++;
}
else
{
listaAlr[o] = lista2[i];
o++;
i++;
}
这是我声明数组的地方。
List<AcompanhamentoSiltIncDTO> lista2 = new List<AcompanhamentoSiltIncDTO>();
List<AcompanhamentoSiltIncDTO> listaInc = new List<AcompanhamentoSiltIncDTO>();
List<AcompanhamentoSiltIncDTO> listaAlr = new List<AcompanhamentoSiltIncDTO>();
我收到此错误,就像数组未初始化一样。
&#34; {&#34;索引超出范围,它应该是非负数且小于集合的大小。 \ R \ nName参数:index&#34;}&#34;
答案 0 :(得分:2)
您应该调用列表中的Add()
方法:
if (lista2[i].FLG_FALHA == true)
listaInc.Add(lista2[i]);
else
listaAlr.Add(lista2[i]);
否则,由于您的listaAlr
和listaInc
没有元素,因此您无法访问o
位置的元素:listaInc[o]
答案 1 :(得分:0)
您收到此错误是因为您的数组范围已超出范围。检查你的索引。但是对于这个任务,我建议你和linq一起工作。它为您提供了许多良好的功能。
如果你有“List&lt;&gt;”您需要使用“添加”方法将元素添加到此列表中。 所以代码将是下一个:
if (lista2[i].FLG_FALHA == true)
{
listaInc.Add(lista2[i]);
i++;
}
else
{
listaAlr.Add(lista2[i]);
i++;
}
但正如我所说,你可以使用LinQ。 代码将是下一个:
listInc = lista2.Where(x => x.FLG_FALHA);
listAlr = lista2.Where(x => !x.FLG_FALHA);
答案 2 :(得分:0)
您可以使用LINQ解决此问题。
var listaInc = from n in lista2
where n == true
select n;
var listaAlr = from n in lista2
where n == false
select n;
更多,更少,但这就是我要做的。