方法: 並列および順次の LINQ クエリを連結する
この例では、PLINQ にクエリ内の後続のすべての演算子を順次処理するように指示する AsSequential メソッドの使用方法を示します。 順次処理はしばしば並列処理よりも遅いですが、正しい結果を出すためにこれが必要な場合もあります。
注意
この例は、使用方法を示すことを意図したものであるため、同等の順次的な LINQ to Objects クエリほど高速ではない可能性があります。 高速化の詳細については、「PLINQ での高速化について」を参照してください。
例
次の例は、クエリの前の句で確立された順序を保持する AsSequential が必要な 1 つのシナリオを示します。
// Paste into PLINQDataSample class.
static void SequentialDemo()
{
var orders = GetOrders();
var query = (from order in orders.AsParallel()
orderby order.OrderID
select new
{
order.OrderID,
OrderedOn = order.OrderDate,
ShippedOn = order.ShippedDate
})
.AsSequential().Take(5);
}
' Paste into PLINQDataSample class
Shared Sub SequentialDemo()
Dim orders = GetOrders()
Dim query = From ord In orders.AsParallel()
Order By ord.OrderID
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
コードのコンパイル
このコードをコンパイルして実行するには、これを PLINQ データのサンプル プロジェクトに貼り付けて、Main
からメソッドを呼び出す行を追加し、F5 キーを押します。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET