方法: 並列および順次の LINQ クエリを連結する

更新 : 2010 年 5 月

この例では、AsSequential<TSource> メソッドを使用して、クエリのすべての後続演算子を順次処理するよう PLINQ に指示する方法を示します。 一般的に、順次処理は並列処理よりも時間がかかりますが、正しい結果を生成するために必要な場合があります。

Caution メモ注意

この例は使用法を示すことを目的としており、同等の 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 年 5 月

使用法と高速化に関する説明を 追加。

カスタマー フィードバック