Ich habe eine Linq-Abfrage, die ich nach f.bar, einer Zeichenfolge, bestellen möchte, aber ich möchte sie auch zuerst nach f.foo, einem booleschen Feld, bestellen. Wie die Abfrage unten.
(from f in foo
orderby f.foo, f.bar
select f)
Obwohl dies kompiliert wird, funktioniert es nicht wie erwartet. Es wird nur von f.bar bestellt, wobei das boolesche Feld ignoriert wird.
Ich bin dumm, ich weiß, aber was muss ich tun, um dieses Verhalten zu bekommen?
Vielen Dank
false
(0) steht vortrue
(1) in aufsteigender (Standard-) Sortierreihenfolge.data.OrderBy(d => d.x).ThenBy(d => d.y)
Ich wollte das nur tun und es scheint etwas ohne implizite Reihenfolge zu sein. Ich habe Folgendes getan, um genauer zu sein:
etwas wahr bis falsch sortieren.
quelle
true
bedeuteta single bit set to 1
? Für mich ist die Wahrheittrue > false
so offensichtlich wie möglich.true > false
ist nicht allgemein bekannt, wohingegen1 > 0
..OrderBy(e => e.SomeFlag == true)
dies äquivalent zu ist ,.OrderBy(e => e.SomeFlag)
während.OrderBy(e => e.SomeFlag ? 0 : 1)
das Äquivalent von ist.OrderByDescending(e => e.SomeFlag)
. Die ersten beiden Sorten sind falsch vor wahr, die anderen beiden Arten sind wahr vor falsch.Bitte versuchen Sie den folgenden Code, wenn Sie die Liste orderby true erhalten.
quelle
Um die verwendete Reihenfolge genauer zu beschreiben.
quelle