Procedura: combinare query LINQ parallele e sequenziali

Questo esempio mostra come usare il metodo AsSequential per indicare a PLINQ di elaborare tutti gli operatori successivi nella query in modo sequenziale. Anche se l'elaborazione sequenziale è spesso più lenta di quella parallela, a volte è necessaria per produrre risultati corretti.

Nota

Lo scopo di questo esempio consiste nell'illustrare l'uso ed è possibile che l'esecuzione non sia più veloce rispetto alla query LINQ to Objects sequenziale equivalente. Per altre informazioni sull'aumento di velocità, vedere Informazioni sull'aumento di velocità in PLINQ.

Esempio

L'esempio seguente mostra uno scenario in cui è necessario usare AsSequential, in particolare per mantenere l'ordinamento stabilito in una clausola precedente della 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);
}

Compilazione del codice

Per compilare ed eseguire il codice, incollarlo nel progetto PLINQ Data Sample, aggiungere una riga per chiamare il metodo da Main e quindi premere F5.

Vedi anche