私はクラスOffer
にファイルカテゴリを含んでいます。リストを並べ替え、特定の値が上にくるようにします。
特定のカテゴリのすべてのオファーが上に表示され、その後にすべてのオファーが表示されます。
私はこれを試しましたが、無駄なことは何をお勧めしますか?
Offers = Offers.OrderBy(x => x.Category == "Corporate").ToList();
私はクラスOffer
にファイルカテゴリを含んでいます。リストを並べ替え、特定の値が上にくるようにします。
特定のカテゴリのすべてのオファーが上に表示され、その後にすべてのオファーが表示されます。
私はこれを試しましたが、無駄なことは何をお勧めしますか?
Offers = Offers.OrderBy(x => x.Category == "Corporate").ToList();
あなたはブール値false
で注文する(0)true
(1)の前に来ます。述語に一致する要素を取得するにはまず、あなたはOrderByDescending
を使用して、ソート順序を逆にする必要があります
Offers = Offers.OrderByDescending(x => x.Category == "Corporate").ToList();
+1良い解決策 –
ええ、これは他のすべての順序も逆になります。 'OrderBy(x => x.Category!=" Corporate ")'を試してください。 –
+1。そしておそらくThenBy(x => x.Category)を追加して、残りのオファーをカテゴリ名でソートします。 –
がC# Language Specification 5.0がtrue
とfalse
値のバイト表現を指定していません。したがって、true
が1
であるという前提に頼らない方がよい。また、ブール式x.Category == "Corporate"
によるソート結果は明らかではありません。true
も同様に負の値で表すことができます。したがって、私はソート値を明示的に指定するために三項演算子を使用します:
Offers = Offers
.OrderBy(x => x.Category == "Corporate" ? 0 : 1)
.ThenBy(x => x.Category)
.ThenBy(x => x.Date) // or what ever
.ToList();
あなたは「無駄」と言うとき、その式の結果はどうなりますか?どうしたの? –
http://stackoverflow.com/questions/728319/linq-orderby-against-specific-values –
正しくソートされず、元の順序になっているようです。 – Wesley