Dela via


Gör så här: Kombinera parallella och sekventiella LINQ-frågor

Det här exemplet visar hur du använder AsSequential metoden för att instruera PLINQ att bearbeta alla efterföljande operatorer i frågan sekventiellt. Även om sekventiell bearbetning ofta är långsammare än parallell, är det ibland nödvändigt att ge korrekta resultat.

Kommentar

Det här exemplet är avsett att demonstrera användning och kanske inte körs snabbare än motsvarande sekventiella LINQ-till-objekt-fråga. Mer information om hastighet finns i Förstå hastighet i PLINQ.

Exempel

I följande exempel visas ett scenario där AsSequential krävs, nämligen att bevara den ordning som upprättades i en tidigare sats i frågan.

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

Kompilera koden

Om du vill kompilera och köra den här koden klistrar du in den i PLINQ Data Sample-projektet , lägger till en rad för att anropa metoden från Mainoch trycker på F5.

Se även