Tengo una tabla que tiene una clave de 2 partes; una columna de ID y un número de versión. Intento seleccionar "solo la última versión" de los registros.¿Por qué no es este grupo LINQ al agregar las filas en vb.net?
Estoy tratando de usar el estilo de expresión de LINQ, para lograr un GROUP BY, y extraer el valor MAX total de la Versión. Sin embargo, no se produce ninguna agregación.
Código Resumido:
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)
}
Resultados reales:
ClientID CredentialID MaxVersion
1196 1 3
1196 1 3
1196 1 3
1196 2 1
resultados deseados:
ClientID CredentialID MaxVersion
1196 1 3
1196 2 1
, también trató mismos resultados:
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)
}
estoy en busca de una solución que no implica la creación de clases personalizadas con propiedades que corresponden a la clasificación y agrupación de encargo/funciones, y no utiliza las expresiones lambda en el extremo de la cola de la consulta.
Gracias!
guau, forma de salvar el día –
¿Puedo preguntar dónde aprendió esta importante pepita de información? –
Principalmente de verter sobre las referencias msdn para System.Linq.Enumerable y System.Linq.Queryable. No tengas miedo de usar la sintaxis lambda, el compilador convierte lo que escribes en eso de todos modos. –