2010-05-11 16 views

Respuesta

38

que haría:

using(var context = new DomainEntities()) 
{ 
    var result = context.Users.OrderBy(u => u.LastName == null) 
           .ThenBy(u => u.LastName) 
           .ThenBy(u => u.FirstName == null) 
           .ThenBy(u => u.FirstName); 
} 

... que debe producir SQL razonable.

+6

Así que esto funciona, pero estoy confundido sobre por qué funciona. ¿Por qué especificar LastName == null devolver valores no nulos primero? – devlife

+7

Porque 'falso' se ordena antes de' true'. –

+0

¿Es ese primer punto y coma un tipo-o (después del control de u.FirstName == null)? – WEFX

4

No sé si hay algún cambio en alguna parte que se puede voltear. De lo contrario, el enfoque hacia adelante recta, probablemente sería algo en la línea de

using (var context = new DomainEntities()) 
    { 
     var FirstPart = context.Users.Where(u => u.LastName != null); 
     var SecondPart = context.Users.Where(u => u.LastName == null); 
     var Result = FirstPart.Union(SecondPart); 
    } 
+2

que producirá bastante fea SQL, sospecho. –

+0

Definir feo :) En realidad, no será tan malo como se podría pensar - para SQL Server 2008, al menos, EF se vuelve algo como esto en una sola instrucción de consulta db. –

+0

Será una afirmación, sí, demasiado complicada. –

Cuestiones relacionadas