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!

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top