如何:合并并行和顺序 LINQ 查询
此示例展示了如何使用 AsSequential 方法,指示 PLINQ 顺序处理查询中的所有后续运算符。 尽管顺序处理通常比并行处理慢,但有时却是生成正确结果的必要条件。
注意
本示例旨在演示用法,运行速度可能不如等效的顺序 LINQ to Objects 查询快。 若要详细了解加速,请参阅了解 PLINQ 中的加速。
示例
下面的示例展示了一种需要 AsSequential 的情况,即暂留在旧查询子句中建立的顺序。
// 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。