J'ai une requête linq que je veux commander par f.bar, qui est une chaîne, mais je veux aussi la commander par f.foo, qui est un champ booléen, d'abord. Comme la requête ci-dessous.
(from f in foo
orderby f.foo, f.bar
select f)
Bien que cela compile, cela ne fonctionne pas comme prévu. Il commande simplement par f.bar en ignorant le champ booléen.
Je suis stupide, je sais, mais que dois-je faire pour obtenir ce comportement?
Merci
false
(0) vient avanttrue
(1) dans l'ordre de tri croissant (par défaut).data.OrderBy(d => d.x).ThenBy(d => d.y)
Je voulais juste faire cela et cela semble être quelque chose sans ordre implicite. J'ai fait ce qui suit pour être plus explicite:
pour trier quelque chose de vrai à faux.
la source
true
signifie un booléena single bit set to 1
? Pour moi, la vérité surtrue > false
est à peu près aussi évidente que possible.true > false
n'est pas universellement connue, alors qu'elle l'1 > 0
est..OrderBy(e => e.SomeFlag == true)
cela équivaut à.OrderBy(e => e.SomeFlag)
alors que.OrderBy(e => e.SomeFlag ? 0 : 1)
est l'équivalent de.OrderByDescending(e => e.SomeFlag)
. Les deux premiers trient faux avant vrai, les deux autres trient vrai avant faux.Veuillez essayer le code suivant si vous obtenez la commande de la liste par true.
la source
Afin d'être plus explicite sur la commande utilisée.
la source