Procedure: Parallelle en sequentiële LINQ-query's combineren
In dit voorbeeld ziet u hoe u de AsSequential methode gebruikt om PLINQ te instrueren om alle volgende operators in de query opeenvolgend te verwerken. Hoewel sequentiële verwerking vaak trager is dan parallel, is het soms nodig om juiste resultaten te produceren.
Notitie
Dit voorbeeld is bedoeld om het gebruik te demonstreren en kan mogelijk niet sneller worden uitgevoerd dan de equivalente sequentiële LINQ naar objectenquery. Zie Inzicht in snelheid in PLINQ voor meer informatie over versnelling.
Opmerking
In het volgende voorbeeld ziet u één scenario waarin AsSequential vereist is, namelijk om de volgorde te behouden die is vastgesteld in een eerdere component van de query.
// 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
De code compileren
Als u deze code wilt compileren en uitvoeren, plakt u deze in het PLINQ-gegevensvoorbeeldproject , voegt u een regel toe om de methode aan te roepen en Main
drukt u op F5.