Devolver todo fila tiene un valor máximo
-
01-10-2019 - |
Pregunta
Estoy usando marco de la entidad para conectar la base de datos.
Tengo una tabla (llamada Hagámosle "Archivo") que haves varios campos:
ID, Versión, XYZ Primarky clave se basa en la identificación y la versión. así que puede tener varios línea con el mismo ID, pero versión diferente (y inversamente).
La pregunta es:
¿Cómo puedo, con una expresión lambda, pedir a mi marco de la entidad, que me devuelve toda la última versión de un "archivo".
Ejemplo: Datas:
ID;Version;Other
1;1;YX
1;2;YZ
2;1;AH
2;2;BH
2;5;CA
1;3;AAA
Resultados:
1;3;AAA
2;5;CA
Gracias!
!! El objetivo es que la base de datos no tiene que devolver todas las filas, y se llama una sola vez, por lo que se olvide solución como GetAllRows y leer toda la colección y guardar sólo la última, o conseguir una lista de todos los posibles ID y obtener la última foreach versión en otra solicitud. Gracias!
Solución
Se puede utilizar la siguiente consulta LinqToEntites para esto:
var result = from f in myEntities.Files
group f by f.ID into g
select g.OrderByDescending(f => f.Version).FirstOrDefault();
Tal vez tendría más sentido para su uso en lugar de First
FirstOrDefault
pero entonces obtener una UnsupportedException
:
El método 'primero' sólo puede ser utilizado como una operación de consulta final. Considere el uso del método de 'FirstOrDefault' en este caso en lugar