2012-02-29 18 views
7

Estoy tratando de obtener una fila (objeto) basada en el máximo de RollNumber que es un largo Datatype field. Espero que devuelva un objeto nulo en caso de que no haya ninguno, así que usé SingleorDefault. Pero parece que mi consulta es incorrecta (trabajo en progreso en linq aquí). Ésta es la consulta:Cómo seleccionar una fila (objeto) basada en un máximo de un campo Entity Framework 4.1

SchoolContextExpress db = new SchoolContextExpress(); 
     Profile profile = db.Profiles.Where(p => p.RollNumber == db.Profiles.Max(r=>r.RollNumber)).SingleOrDefault(); 

gracias por leer esto.

+0

Me parece bien ¿Cuál es el problema? – Carl

+0

¡Bueno, funciona bien aquí! ¿Le da un error? – madC

+0

Contiene más de un elemento –

Respuesta

9

Para trabajar con RollNumber vacío ...

Profile profile = db.Profiles.Where(p => p.RollNumber !=0 && p.RollNumber == db.Profiles.Max(r=>r.RollNumber)).SingleOrDefault(); 

O es posible que desee considerar ...

Profile profile = db.Profiles.Where(p => p.RollNumber == db.Profiles.Where(p1 => p1.RollNumber != 0).Max(r=>r.RollNumber)).SingleOrDefault(); 
+0

supongo que haría diferente de cero, ya que RollNumber es largo. ¿Eso esta bien? –

+0

Sí, lo siento, editado. – Carl

+0

gracias tomando notas;) –

2

Otra manera de hacerlo junto a la primera respuesta:

Profile profile = db.Profiles.OrderByDescending(p => p.RollNumber).FirstOrDefault(); 
Cuestiones relacionadas