2015-08-21 57 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