Share via


Cómo: Combinar consultas LINQ paralelas y secuenciales

En este ejemplo, se muestra cómo usar el método AsSequential<TSource> para indicar a PLINQ que procese secuencialmente todos los operadores posteriores de la consulta. Aunque el procesamiento secuencial es por lo general más lento que el procesamiento en paralelo, a veces es necesario para generar resultados correctos.

Nota de precauciónPrecaución

Este ejemplo está diseñado para mostrar el uso y podría no ejecutarse más rápidamente que la consulta secuencial equivalente de LINQ to Objects.Para obtener más información sobre la aceleración, vea Introducción a la velocidad en PLINQ.

Ejemplo

En el siguiente ejemplo se muestra un escenario en el que se requiere AsSequential<TSource>, a saber, para conservar el orden que se estableció en una cláusula anterior de la consulta.

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

Compilar el código

Para compilar y ejecutar este código, péguelo en el proyecto Ejemplo de datos de PLINQ, agregue una línea para llamar al método desde Main y, a continuación, presione F5.

Vea también

Conceptos

Parallel LINQ (PLINQ)

Historial de cambios

Fecha

Historial

Motivo

Mayo de 2010

Se ha agregado una nota sobre el uso frente a aceleración.

Comentarios de los clientes.