Coma abbiamo visto nello script #281, una query PLINQ viene distribuita sui processori della macchina per ottimizzare le prestazioni. In virtù di questa distribuzione, l'ordinamento dei dati restituiti non è lo stesso dei dati che vengono processati in quanto la schedulazione dei thread che processano la lista dipende dal sistema operativo.
Tuttavia, se abbiamo la necessità di mantenere lo stesso ordine, possiamo ricorrere al metodo AsOrdered che in fase di merge dei dati restituiti ristabilisce l'ordine.
var result = (from p in persone.AsParallel().AsOrdered() where p.eta > 30 select p) .Take(10);
Grazie al metodo AsOrdered, le 10 persone che vengono restituite sono le prime 10 trovate nella lista originale. Senza AsOrdered, le 10 persone restituite sarebbero state prese in maniera randomica in quanto l'ordine dipende da quale thread finisce prima di processare la sua porzione di dati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare lo spread operator con i collection initializer in C#
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Usare il versioning con i controller di ASP.NET Core Web API
Utilizzare i primary constructor in C#
Aggiungere interattività lato server in Blazor 8
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Utilizzare le collection expression in C#
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Creare gruppi di client per Event Grid MQTT
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Miglioramenti nelle performance di Angular 16