2015-08-21 59 views
-2

所以我有一組數組中的變量,並且我想從每個(比方說)第四個索引收集數據。例如,如果我有數組all [],其數據位於[0]->id [1]->field1 [2]->field2之後,並且在[3]->linebreak之後,並且在另一組之後有[4]->id [5]->field1[6]->field2 [7]->linebreak等等。現在我想創建一個名爲id []的數組(或列表),該數組將包含所有的id和一個field1[],它們將具有所有的字段。我怎麼能這樣做?組織數組c#

+5

'我怎麼能這樣做?'不是問題。它意味着*「爲我寫」*。展示你的努力和迄今爲止所做的一切。 – EZI

+2

看起來像一個糟糕的設計決定,把多種東西放在同一個陣列中。 –

+0

我只是對算法感興趣。我正在考慮創建多個for循環,它可以在所有[0]開始,也許會加載每個第四個元素,但它需要我編寫大量的算法,我不喜歡它,它看起來不好,它不是一般來說好主意。我相信有人有更好的方法來解決它。 –

回答

5

您可以對每個數組元素的索引應用模4以確定其沿四個組的位置。 Ids將處於位置0;場將在位置1和2

int[] ids = all.Where((_, i) => i % 4 == 0).ToArray(); 
int[] fields = all.Where((_, i) => i % 4 == 1 || i % 4 == 2).ToArray(); 
+0

我從來沒有考慮過使用'_'作爲變量名。可愛。 –

+0

謝謝,這就是我正在尋找的 –

+1

@JoelCoehoorn:我也喜歡'_'。我曾經使用unicode雪人作爲javascript函數中的變量。還沒有在C#中嘗試過。 –

1

您可能會發現更容易地將數據存儲在一個對象...

public class DataObject { 

    public DataObject() {} 
    public DataObject(string[] fields) { 
     // this is an example. construct a .ctor that is sane for your data. 
     // TODO: Add array bounds checking and data sanity checks 
     this.ID = fields[0]; 
     this.Field1 = fields[1]; 
     this.Field2 = fields[2]; 
    } 

    public string ID {get; set;} 

    public string Field1 {get; set;} 

    public string Field2 {get; set;} 
} 

然後,你將存儲陣列或陣列狀結構DataObject