如何:合并并行和顺序 LINQ 查询

此示例展示了如何使用 AsSequential 方法,指示 PLINQ 顺序处理查询中的所有后续运算符。 尽管顺序处理通常比并行处理慢,但有时却是生成正确结果的必要条件。

注意

本示例旨在演示用法,运行速度可能不如等效的顺序 LINQ to Objects 查询快。 若要详细了解加速,请参阅了解 PLINQ 中的加速

示例

下面的示例展示了一种需要 AsSequential 的情况,即暂留在旧查询子句中建立的顺序。

// Paste into PLINQDataSample class.
static void SequentialDemo()
{
    var orders = GetOrders();
    var query = (from order in orders.AsParallel()
                 orderby order.OrderID
                 select new
                 {
                     order.OrderID,
                     OrderedOn = order.OrderDate,
                     ShippedOn = order.ShippedDate
                 })
                 .AsSequential().Take(5);
}
' Paste into PLINQDataSample class
Shared Sub SequentialDemo()

    Dim orders = GetOrders()
    Dim query = From ord In orders.AsParallel()
                Order By ord.OrderID
                Select New With
                {
                    ord.OrderID,
                    ord.OrderDate,
                    ord.ShippedDate
                }

    Dim query2 = query.AsSequential().Take(5)

    For Each item In query2
        Console.WriteLine("{0}, {1}, {2}", item.OrderDate, item.OrderID, item.ShippedDate)
    Next
End Sub

编译代码

若要编译并运行此代码,请将它粘贴到 PLINQ 数据样本项目中,添加用于从 Main 调用方法的代码行,再按 F5。

请参阅