Condividi tramite


Procedura: combinare query LINQ parallele e sequenziali

In questo esempio viene illustrato come utilizzare il metodo AsSequential<TSource> per indicare a PLINQ di elaborare in modo sequenziale tutti gli operatori successivi nella query. Benché in genere l'elaborazione sequenziale sia più lenta rispetto a quella in parallelo, in alcuni casi è necessario produrre risultati corretti.

Nota di avvisoAttenzione

Lo scopo di questo esempio è dimostrare l'utilizzo e potrebbe non essere eseguito più velocemente dell'equivalente query LINQ to Objects sequenziale.Per ulteriori informazioni sull'aumento di velocità, vedere Informazioni sull'aumento di velocità in PLINQ.

Esempio

Nell'esempio seguente viene mostrato uno scenario in cui si richiede l'utilizzo di AsSequential<TSource>, in particolare per conservare l'ordine stabilito in una clausola precedente della query.

' 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);
}

Compilazione del codice

Per compilare ed eseguire questo codice, incollarlo nel progetto PLINQ Data Sample, aggiungere una riga per chiamare il metodo da Main e premere F5.

Vedere anche

Concetti

Parallel LINQ (PLINQ)

Cronologia delle modifiche

Data

Cronologia

Motivo

Maggio 2010

Aggiunta nota sull'utilizzo rispetto all'aumento di velocità.

Commenti e suggerimenti dei clienti.