Delen via


Procedure: Parallelle en sequentiële LINQ-query's combineren

In dit voorbeeld ziet u hoe u de AsSequential methode gebruikt om PLINQ te instrueren om alle volgende operators in de query opeenvolgend te verwerken. Hoewel sequentiële verwerking vaak trager is dan parallel, is het soms nodig om juiste resultaten te produceren.

Notitie

Dit voorbeeld is bedoeld om het gebruik te demonstreren en kan mogelijk niet sneller worden uitgevoerd dan de equivalente sequentiële LINQ naar objectenquery. Zie Inzicht in snelheid in PLINQ voor meer informatie over versnelling.

Opmerking

In het volgende voorbeeld ziet u één scenario waarin AsSequential vereist is, namelijk om de volgorde te behouden die is vastgesteld in een eerdere component van de query.

// 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

De code compileren

Als u deze code wilt compileren en uitvoeren, plakt u deze in het PLINQ-gegevensvoorbeeldproject , voegt u een regel toe om de methode aan te roepen en Maindrukt u op F5.

Zie ook