Postupy: Kombinování paralelních a sekvenčních LINQ dotazů
Tento příklad ukazuje, jak pomocí AsSequential metody instruovat PLINQ zpracovat všechny následné operátory v dotazu postupně. I když je sekvenční zpracování často pomalejší než paralelní, někdy je nutné vytvořit správné výsledky.
Poznámka:
Tento příklad je určený k předvedení využití a nemusí běžet rychleji než ekvivalentní sekvenční dotaz LINQ to Objects. Další informace o zrychlení naleznete v tématu Principy zrychlení v PLINQ.
Příklad
Následující příklad ukazuje jeden scénář, ve kterém AsSequential je vyžadováno, a to zachování pořadí, které bylo vytvořeno v předchozí klauzuli dotazu.
// 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
Probíhá kompilace kódu
Pokud chcete tento kód zkompilovat a spustit, vložte ho do projektu PLINQ Data Sample , přidejte řádek pro volání metody z Main
a stiskněte klávesu F5.