为什么在Take()之前需要AsSequential()来保存顺序?

时间:2017-02-20 01:34:47

标签: c# parallel-processing plinq

From MSDN:

  

以下示例显示了一个场景   AsSequential是必需的,即保留排序   这是在查询的前一个子句中建立的。

    // Paste into PLINQDataSample class.
    static void SequentialDemo()
    {
        var orders = GetOrders();
        var query = (from ord in orders.AsParallel()
                     orderby ord.CustomerID
                     select new
                     {
                         Details = ord.OrderID,
                         Date = ord.OrderDate,
                         Shipped = ord.ShippedDate
                     }).
                            AsSequential().Take(5);
    }

我已经设置了PLINQDataSample课程,我一直在运行此SequentialDemo(),但无论我做什么,我都找不到删除AsSequential()的情况任何差异。

有人可以对此有所了解吗?我知道AsSequential()用于复杂查询,其中某些部分应按顺序运行,而某些部分应并行运行。我见过多个来源以此为例,说AsSequential()需要在Take()之前使用才能保留顺序。但是没有它,秩序似乎就会得到保留。

0 个答案:

没有答案