Partager via


Comment : combiner des requêtes LINQ parallèles et séquentielles

Cet exemple indique comment utiliser la méthode AsSequential<TSource> pour indiquer à PLINQ de traiter séquentiellement tous les opérateurs suivants dans la requête. Bien que le traitement séquentiel soit généralement plus lent que le traitement parallèle, il est quelquefois nécessaire pour produire des résultats corrects.

Remarque AttentionAttention

Cet exemple est destiné à montrer l'utilisation et peut ne pas s'exécuter plus rapidement que la requête LINQ to Objects séquentielle équivalente.Pour plus d'informations sur l'accélération, consultez Fonctionnement de l'accélération dans PLINQ.

Exemple

L'exemple suivant affiche un scénario dans lequel AsSequential<TSource> est obligatoire, pour conserver le classement établi dans une clause précédente de la requête.

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

Compilation du code

Pour compiler et exécuter ce code, collez-le dans le projet Données PLINQ, exemple, ajoutez une ligne pour appeler la méthode à partir de Main, puis appuyez sur F5.

Voir aussi

Concepts

Parallel LINQ (PLINQ)

Historique des modifications

Date

Historique

Motif

Mai 2010

Remarque ajoutée concernant l'utilisation et l'accélération.

Commentaires client.