Compartilhar via


Como: Combinar consultas do LINQ paralelas e seqüenciais

Este exemplo mostra como usar o AsSequential<TSource> método para instruir o PLINQ para processar todos os operadores subseqüentes na consulta seqüencialmente. Embora o processamento seqüencial é geralmente mais lento do que paralelo, às vezes é necessário produzir resultados corretos.

Observação de cuidadoCuidado

Este exemplo destina-se para demonstrar o uso e pode não ser executado mais rápido do que o equivalente LINQ to Objects seqüencial de consulta de.Para obter mais informações sobre o aumento de velocidade, consulte Aumento de velocidade de compreensão no PLINQ.

Exemplo

O exemplo a seguir mostra um cenário no qual AsSequential<TSource> for necessária, ou seja, para preservar a ordem foi estabelecida em uma cláusula anterior da 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);
}

Compilando o código

Para compilar e executar esse código, colá-lo para o Amostra de dados do PLINQ de projeto, adicione uma linha para chamar o método de Main, e pressione F5.

Consulte também

Conceitos

Parallel LINQ PLINQ)

Histórico de alterações

Date

History

Motivo

Maio de 2010

Observação adicionada referentes ao uso vs. aumento de velocidade.

Comentários do cliente.