Ho una tabella che ha una chiave di 2 parti; una colonna ID e un numero di versione. Sto provando a selezionare 'solo l'ultima versione' dei record.Perché questo gruppo LINQ non è aggregando le righe in vb.net?
Sto provando a utilizzare lo stile di espressione di LINQ, per ottenere un GROUP BY, ed estrarre il valore MAX aggregato della versione. Tuttavia nessuna aggregazione è in corso.
Codice Sintetica:
From C In Credentials
Group Join ....
Group Join ....
Group C.CredentialID, NE.ClientID, C.Version By
NE.ClientID, C.CredentialID Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = CG.ClientID,
.CredentialID = CG.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
risultati effettivi:
ClientID CredentialID MaxVersion
1196 1 3
1196 1 3
1196 1 3
1196 2 1
risultati desiderati:
ClientID CredentialID MaxVersion
1196 1 3
1196 2 1
provato Inoltre, gli stessi risultati:
Group C By Key = New With
{Key NE.ClientID, Key C.CredentialID} Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = Key.ClientID,
.CredentialID = Key.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
Sto cercando una soluzione che non comporta la creazione di classi personalizzate con proprietà di corrispondenza e ordinamento personalizzato/funzioni di raggruppamento, e non utilizza le espressioni lambda sulla coda della query.
Grazie!
wow, modo per salvare il giorno –
Posso chiedere dove hai imparato questa importante pepita di informazioni? –
Principalmente dal riversamento sui riferimenti msdn per System.Linq.Enumerable e System.Linq.Queryable. Non abbiate paura di usare la sintassi lambda, il compilatore trasforma comunque ciò che scrivete. –