2017-03-09 54 views
0

我有一個Array.It例如有10行。 我需要checka 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>(); 

我得到這個錯誤,這就像數組沒有初始化。

「{」索引超出範圍,應該是非負數,並且小於集合的大小。 \ r \ n名稱參數:指數「}」

+1

這些不是數組而是列表。使用Add()方法。 –

+1

另外,您正在添加到then和else分支中的_same_列表。你可能沒有用你的變量命名更好的錯誤。 –

+0

當你得到一個錯誤,告訴你索引需要小於集合的大小時,檢查*兩件事情*:索引的值和集合的大小。至少其中之一不是你認爲的。 –

回答

2

你應該打電話給你的列表的Add()方法:

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

否則,因爲你的listaAlrlistaInc已經沒有元素,你就會得到無法訪問元素olistaInc[o]

0

由於您離開陣列的範圍而出現此錯誤。檢查你的索引。但爲了這個任務,我建議你使用linq。它給你很多好的功能。

如果您有「列表<>」,則需要使用「添加」方法向此列表添加元素。 所以代碼將是未來:

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); 
0

你可以用LINQ來解決這個問題。

var listaInc = from n in lista2 
       where n == true 
       select n; 

var listaAlr = from n in lista2 
       where n == false 
       select n; 

位更多,位少,但這就是我會做的。