Поделиться через


Практическое руководство. Объединение параллельных и последовательных запросов LINQ

В этом примере показано, как использовать метод AsSequential<TSource> для указания PLINQ последовательно обработать все последующие операторы в запросе. Хотя обычно последовательная обработка медленнее, чем параллельная, иногда она требуется для получения правильных результатов.

Предупреждающее замечаниеВнимание

Этот пример демонстрирует использование и может выполняться медленнее, чем аналогичный последовательный запрос LINQ to Objects.Дополнительные сведения об увеличении скорости см. в разделе Общее представление об ускорении выполнения в PLINQ.

Пример

В следующем примере показан один сценарий, в котором AsSequential<TSource> необходим, а именно для сохранения порядка, установленного в предыдущем предложении запроса.

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

Компиляция кода

Чтобы скомпилировать и запустить этот код, нужно вставить его в проект Пример данных PLINQ, добавить строку для вызова метода из Main и нажать F5.

См. также

Основные понятия

Parallel LINQ (PLINQ)

Журнал изменений

Дата

Журнал

Причина

Май 2010

Добавлено примечание о сравнении использования и ускорения.

Обратная связь от клиента.