Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 重构LINQ ForEach以返回IEnumerable<;T>;_C#_Linq_Plinq - Fatal编程技术网

C# 重构LINQ ForEach以返回IEnumerable<;T>;

C# 重构LINQ ForEach以返回IEnumerable<;T>;,c#,linq,plinq,C#,Linq,Plinq,我正在使用以下CreateArray静态方法创建数组: public static int[] CreateArray(int size) { var ret = new int[size]; ret[0] = 0; ret[1] = 1; Parallel.ForEach(Enumerable.Range(2, size - 2), i => { ret[i] = Func(i).Count(); }); ret

我正在使用以下
CreateArray
静态方法创建数组:

public static int[] CreateArray(int size)
{
    var ret = new int[size];
    ret[0] = 0;
    ret[1] = 1;

    Parallel.ForEach(Enumerable.Range(2, size - 2), i =>
    {
        ret[i] = Func(i).Count();
    });

    return ret;
}
其中Func看起来像:

public static IEnumerable<int> Func(int i)
{
    ...
}

我认为PLINQ在这里很有用:

var tableFromIndex = ParallelEnumerable.Range(2, size - 2)
        .AsOrdered()
        .Select(i => Func(i).Count());

return new[] { 0, 1 }
        .Concat(tableFromIndex)
        .ToArray();

嘿,斯维克,我认为这是对的,但实际上我得到的结果不是按
I
排序的。我的意思是,我可以并行运行
Func(I).Count()
,但是结果应该放在
I
位置…谢谢svick,我不知道
AsOrdered()
是否存在
var tableFromIndex = ParallelEnumerable.Range(2, size - 2)
        .AsOrdered()
        .Select(i => Func(i).Count());

return new[] { 0, 1 }
        .Concat(tableFromIndex)
        .ToArray();