Share via


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

更新:2010 年 5 月

此示例演示如何使用 AsSequential<TSource> 方法指示 PLINQ 按顺序处理查询中的所有后续运算符。 尽管顺序处理通常比并行处理慢,但有时必须使用顺序处理才能生成正确的结果。

警告说明警告

本示例旨在演示用法,运行速度可能不如等效的顺序 LINQ to Objects 查询快。有关加速的更多信息,请参见了解 PLINQ 中的加速

示例

下面的示例演示需要 AsSequential<TSource> 的一种情况,即保留在查询前面的子句中建立的排序。

' Paste into PLINQDataSample class
Shared Sub SequentialDemo()

    Dim orders = GetOrders()
    Dim query = From ord In orders.AsParallel()
                 Order By ord.CustomerID
                 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
// 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);
}

编译代码

若要编译和运行此代码,请将它粘贴到 PLINQ 数据示例项目中,添加一行以从 Main 调用该方法,然后按 F5。

请参见

概念

并行 LINQ (PLINQ)

修订记录

日期

修订记录

原因

2010 年 5 月

添加了有关用法与 加速的注释。

客户反馈