Tengo una consulta de linq que quiero ordenar por f.bar, que es una cadena, pero también quiero ordenarla por f.foo, que es un campo booleano, primero. Como la consulta a continuación.
(from f in foo
orderby f.foo, f.bar
select f)
Aunque esto se compila, no funciona como se esperaba. Simplemente ordena por f.bar ignorando el campo booleano.
Estoy siendo tonto, lo sé, pero ¿qué debo hacer para tener este comportamiento?
Gracias
false
(0) viene antes detrue
(1) en orden ascendente (predeterminado).data.OrderBy(d => d.x).ThenBy(d => d.y)
Solo quería hacer esto y parece algo sin un orden implícito. Hice lo siguiente para ser más explícito:
para ordenar algo verdadero a falso.
fuente
true
significa un booleanoa single bit set to 1
? Para mí, la verdadtrue > false
es tan obvia como puede ser.true > false
no es universalmente conocido, mientras1 > 0
que sí..OrderBy(e => e.SomeFlag == true)
sería equivalente a.OrderBy(e => e.SomeFlag)
mientras que.OrderBy(e => e.SomeFlag ? 0 : 1)
es el equivalente de.OrderByDescending(e => e.SomeFlag)
. Los dos primeros clasifican falso antes que verdadero, los otros dos clasifican verdadero antes que falso.Intente seguir el código si obtiene la lista orderby true.
fuente
Para ser más explícito sobre el orden que se utiliza.
fuente