Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
遍历c#array&;将对象按顺序放置到其他数组中_C#_Arrays_Loops_Foreach - Fatal编程技术网

遍历c#array&;将对象按顺序放置到其他数组中

遍历c#array&;将对象按顺序放置到其他数组中,c#,arrays,loops,foreach,C#,Arrays,Loops,Foreach,好吧,这看起来很简单,但我想不出一个简单的解决方案; 基本上我有一个C#中的对象数组,它包含,比如说,102个元素。然后我还有4个其他空数组。我想遍历原始数组并均匀分布100个元素,然后分别将101和102分布到第一个和第二个新数组 int i = 1,a=0, b=0, c=0, d = 0; foreach (ReviewStatus data in routingData) { if (i == 1) { threadOneWork[a] = data;

好吧,这看起来很简单,但我想不出一个简单的解决方案; 基本上我有一个C#中的对象数组,它包含,比如说,102个元素。然后我还有4个其他空数组。我想遍历原始数组并均匀分布100个元素,然后分别将101和102分布到第一个和第二个新数组

int i = 1,a=0, b=0, c=0, d = 0;

foreach (ReviewStatus data in routingData)
{
    if (i == 1)
    {
        threadOneWork[a] = data;
        a++;
    }
    if (i == 2)
    {
        threadTwoWork[b] = data;
        b++;
    }
    if (i == 3)
    {
        threadThreeWork[c] = data;
        c++;
    }
    if (i == 4)
    {
        threadFourWork[d] = data;
        d++;
        i = 0;
    }
    i++;

}

现在,上面的代码确实有效,但我很好奇,有人知道更好的方法吗???

将四个数组放入数组数组中,并使用
I%4
作为索引。假设
thread####Work
数组有足够的空间存储数据,可以执行以下操作:

var tw = new[] {threadOneWork, threadTwoWork, threadThreeWork, threadFourWork};
var i = 0;
foreach (ReviewStatus data in routingData) {
    tw[i%4][i/tw.Length] = data;
    i++;
}
var workArrays=new[]{
线程工作,
线工,
细线工作,
丝网,
};

对于(int i=0;iLinq是您的朋友!在案例4中,使用模通过数组总数对项目进行分组

例如,代码将它们分成四个不同的列表:

var Items = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Items.Select( ( i, index ) => new {
                                      category = index % 4,
                                      value = i
                                  } )
        .GroupBy( itm => itm.category, itm => itm.value )
        .ToList()
        .ForEach( gr => Console.WriteLine("Group {0} : {1}", gr.Key, string.Join(",", gr)));
/* output
Group 0 : 1,5,9
Group 1 : 2,6,10
Group 2 : 3,7
Group 3 : 4,8
*/
var Items=新列表{1,2,3,4,5,6,7,8,9,10};
项目。选择((i,索引)=>新建{
类别=索引%4,
值=i
} )
.GroupBy(itm=>itm.category,itm=>itm.value)
托利斯先生()
.ForEach(gr=>Console.WriteLine(“组{0}:{1}”,gr.Key,string.Join(“,”,gr));
/*输出
第0组:1,5,9
第一组:2,6,10
第2组:3,7
第3组:4,8
*/

我们假设你指的是多维数组而不是锯齿数组,对吗?@codesparkle我写了“数组数组”而不是“多维数组”来区分。我只是添加了一个代码示例来澄清。这实际上有点性感;)数学有时很有意义。@msarchet-我甚至不会说“性感”,但我会说“中等吸引力”…@chaosption它显然很简单。哈哈,谢谢大家的建议,这肯定会取代我原来的帖子。林克将是我的下一步,但如果我不需要它,那就更好了!注意,不必提前创建阵列。foreach可用于执行您所寻求的处理。更紧凑的IMHO;但很高兴您对此表示感谢。:-)
var Items = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Items.Select( ( i, index ) => new {
                                      category = index % 4,
                                      value = i
                                  } )
        .GroupBy( itm => itm.category, itm => itm.value )
        .ToList()
        .ForEach( gr => Console.WriteLine("Group {0} : {1}", gr.Key, string.Join(",", gr)));
/* output
Group 0 : 1,5,9
Group 1 : 2,6,10
Group 2 : 3,7
Group 3 : 4,8
*/