Procedura: combinare query LINQ parallele e sequenziali
In questo esempio viene illustrato come utilizzare il metodo AsSequential<TSource> per indicare a PLINQ di elaborare in modo sequenziale tutti gli operatori successivi nella query. Benché in genere l'elaborazione sequenziale sia più lenta rispetto a quella in parallelo, in alcuni casi è necessario produrre risultati corretti.
Attenzione |
---|
Lo scopo di questo esempio è dimostrare l'utilizzo e potrebbe non essere eseguito più velocemente dell'equivalente query LINQ to Objects sequenziale.Per ulteriori informazioni sull'aumento di velocità, vedere Informazioni sull'aumento di velocità in PLINQ. |
Esempio
Nell'esempio seguente viene mostrato uno scenario in cui si richiede l'utilizzo di AsSequential<TSource>, in particolare per conservare l'ordine stabilito in una clausola precedente della query.
' 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);
}
Compilazione del codice
Per compilare ed eseguire questo codice, incollarlo nel progetto PLINQ Data Sample, aggiungere una riga per chiamare il metodo da Main e premere F5.
Vedere anche
Concetti
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Maggio 2010 |
Aggiunta nota sull'utilizzo rispetto all'aumento di velocità. |
Commenti e suggerimenti dei clienti. |