将数组值传递给另一个数组

时间:2017-03-09 20:38:35

标签: c# arrays

我有一个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;

3 个答案:

答案 0 :(得分:2)

您应该调用列表中的Add()方法:

if (lista2[i].FLG_FALHA == true)
  listaInc.Add(lista2[i]);
else
  listaAlr.Add(lista2[i]);

否则,由于您的listaAlrlistaInc没有元素,因此您无法访问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;

更多,更少,但这就是我要做的。