Quando lavoriamo con SQL e vogliamo eseguire unagroup by è naturale includere nella suddetta clausola gli stessi campi che includiamo nella clausola select. Prendiamo come esempio la seguente istruzione SQL.
SELECT a.Id, a.Name, MAX(Price) FROM Books b INNER JOIN Authors a ON AuthorId = Id GROUP BY a.Id, a.Name
In questa query estraiamo una lista di autori dove per ogni autore recuperiamo id, nome e il prezzo del suo libro più costoso.
Quando lavoriamo con Entity Framework e quindi esprimiamo le nostre query su degli oggetti, il modo di ragionare cambia. Spesso infatti non vogliamo raggruppare per un campo o due, ma per una intera entity. Se riprendiamo l'esempio precedente, appare evidente come vogliamo raggruppare non per due campi, ma per l'entity Author. Possimao quindi scrivere la query LINQ nel seguente modo.
var query = context.Books .GroupBy(s => s.Author) .Select(s => new { Author = s.Key, MaxPrice = s.Max(p => p.Price) });
Come si vede dal codice, non abbiamo eseguito un raggruppamento per i singoli campi dell'autore, ma direttamente per l'entity. In fase di creazione del codice SQL, Entity Framework espanderà i campi dell'entity e genererà il codice SQL visto all'inizio.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Eseguire le GitHub Actions offline
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Utilizzare un service principal per accedere a Azure Container Registry
Ottenere un token di accesso per una GitHub App
Creare una libreria CSS universale: i bottoni
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eseguire operazioni sui blob con Azure Storage Actions
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Utilizzare Azure AI Studio per testare i modelli AI