ho una tabella come questa (Nome tabella: i messaggi):Entity Framework selezionare una delle ogni gruppo per data
+----+--------------------------+-------+------------+
| id | content | type | date |
+----+--------------------------+-------+------------+
| 0 | Some text | TypeA | 2013-04-01 |
| 1 | Some older text | TypeA | 2012-03-01 |
| 2 | Some even older texttext | TypeA | 2011-01-01 |
| 3 | A dog | TypeB | 2013-04-01 |
| 4 | And older dog | TypeB | 2012-03-01 |
| 5 | An even older dog | TypeB | 2011-01-01 |
+----+--------------------------+-------+------------+
Usando un'espressione LINQ Voglio trovare il nuovo contenuto di ogni tipo, per cui il risultato dovrebbe essere
Some text | TypeA
A dog | TypeB
Ho provato alcune cose, ma non ha senso indicare le espressioni non funzionanti.
Il gruppo viene eseguito prima dell'esecuzione della query o dopo? Quindi estrarrà ogni riga dal db, quindi li raggrupperà o aggiungerà un gruppo per istruzione alla query in modo da tirare solo le righe raggruppate? – Samir
@Samir: Questo è davvero un buon punto. Sembra avere comportamenti diversi a seconda della versione su EF. EF 7 sembra caricare i dati sul client e li raggruppa: https://stackoverflow.com/questions/11564311/sql-to-entity-framework-count-group-by. Il core EF sembra avere il supporto per il gruppo sql da: https://github.com/aspnet/EntityFrameworkCore/pull/9872. Per confermare questo, è possibile utilizzare un profiler per visualizzare la query sql effettiva. –
@Samir: se si utilizza la versione più recente di EF Core e le prestazioni sono accettabili, è possibile considerare questa soluzione anche se la query sql non utilizza il gruppo per (avvolgere il codice in una funzione in modo da poterlo successivamente ridefinire se necessario), sembra che la gente ne abbia tenuto conto e le versioni successive potrebbero supportarlo. Altrimenti, devi scrivere query sql raw. –