Normalmente, quando si usa l'operatore GroupBy per raggruppare i dati di una query, si utilizza in seguito un operatore Select per decidere quali dati restituire al client.
A partire da Entity Framework 7, possiamo utilizzare GroupBy anche come ultima istruzione di una query LINQ. In questo caso, EF si comporta in modo particolare, rispetto a quanto ci si potrebbe aspettare, ma, perfettamente regolare. Entity Framework non traduce la GroupBy LINQ in una group by SQL, ma in una normale select e una volta scaricati i dati li raggruppa sul client.
Prendiamo il seguente esempio.
var query = context.Person.GroupBy(s => s.LastName);
In questo caso, stiamo cercando tutti i dati di tutte le persone nella tabella e vogliamo che queste persone siano raggruppate in base al cognome. Un raggruppamento del genere causerebbe la restituzione di tutti i record della tabella in quanto nei campi restituiti è compreso anche l'id rendendo quindi inutile l'utilizzo di una group by. Per questo motivo Entity Framework genera la seguente query SQL.
SELECT [a].[Id], [a].[LastName], [a].[FirstName], [a].[BirthDate] FROM People AS [a] ORDER BY [a].[LastName]
Fino alla versione 6, la query LINQ che abbiamo visto solleva un'eccezione in quanto il team non era sicuro di come implementare la funzionalità per paura che l'assenza di una group by avrebbe suscitato reazioni (erronee) da parte degli utilizzatori di Entity Framework . Durante lo sviluppo di Entity Framework 7, il team ha deciso di supportare questo nuovo pattern e di fornire un'apposita documentazione molto chiara per spiegare i motivi della scelta.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Canary release con .NET Aspire
Validare i dati di una colonna JSON in SQL Server
Creare un extension method per applicare condizionalmente una Where in una query LINQ per Entity Framework
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Utilizzare le librerie native di .NET per comprimere uno o più file in formato ZIP
How to be a DevOps engineer in the AI era
Applicare il progressive enhancement in applicazioni web
Ricerca delle GitHub issue tramite operatori logici
Creare un agente A2Acon Azure Logic Apps
Planning & Specification Driven Development + GitHub Copilot
Validazione personalizzata nelle Minimal API di ASP.NET Core
I più letti di oggi
- Versione del .NET Reflector per Whidbey
- Gestire valori null nelle espressioni di binding con TargetNullValue in Silverlight 4.0
- Prima beta di XNA Express: scrivere giochi per XBOX 360 con il .NET Framework
- Leggere una smart Card direttamente nel browser con Silverlight 5.0
- Wrox di nuovo sulla breccia?
- E' ufficiale: Whidbey e Yukon nel 2005
- .NET Framework 2.0 Code Coverage Edition per la compatibilità con la 1.x
- Gli oggetti CallOut di Expression Blend 4.0
- Gestione del routing con AngularJS
- Conoscere l'URL del sito web dal quale si è installata un'applicazione OOB Silverlight 4.0


