Eu tenho uma consulta linq que desejo ordenar por f.bar, que é uma string, mas também quero ordená-la por f.foo, que é um campo booleano, primeiro. Como a consulta abaixo.
(from f in foo
orderby f.foo, f.bar
select f)
Embora compile, não funciona como esperado. Ele apenas ordena por f.bar ignorando o campo booleano.
Estou sendo idiota, eu sei, mas o que preciso fazer para obter esse comportamento?
obrigado
false
(0) vem antes detrue
(1) em ordem de classificação crescente (padrão).data.OrderBy(d => d.x).ThenBy(d => d.y)
Só queria fazer isso e parece algo sem ordem implícita. Fiz o seguinte para ser mais explícito:
para classificar algo verdadeiro para falso.
fonte
true
significaa single bit set to 1
? Para mim, a verdadetrue > false
é tão óbvia quanto pode ser.true > false
não é universalmente conhecido, ao passo que1 > 0
é..OrderBy(e => e.SomeFlag == true)
seria equivalente a.OrderBy(e => e.SomeFlag)
enquanto.OrderBy(e => e.SomeFlag ? 0 : 1)
é equivalente a.OrderByDescending(e => e.SomeFlag)
. As duas primeiras classificam falso antes de verdadeiro, as outras duas classificam verdadeiro antes de falso.Tente seguir o código se obtiver a lista orderby true.
fonte
Para ser mais explícito sobre a ordem que está sendo usada.
fonte