LINQ の null 列による順序付けでは昇順で、null は最後に配置する必要があります 質問する

LINQ の null 列による順序付けでは昇順で、null は最後に配置する必要があります 質問する

商品リストを価格順に並べ替えようとしています。

結果セットでは、列ごとに製品を価格の低い順から高い順にリストする必要がありますLowestPrice。ただし、この列は NULL 可能です。

次のようにリストを降順で並べ替えることができます。

var products = from p in _context.Products
   where p.ProductTypeId == 1
   orderby p.LowestPrice.HasValue descending
   orderby p.LowestPrice descending
   select p;

// returns:    102, 101, 100, null, null

しかし、これを昇順で並べ替える方法がわかりません。

// i'd like: 100, 101, 102, null, null

ベストアンサー1

両方の列を同じ orderby に配置してみてください。

orderby p.LowestPrice.HasValue descending, p.LowestPrice

それ以外の場合、各 orderby はコレクションに対する個別の操作となり、そのたびにコレクションの順序が変更されます。

これは、最初に値を持つものを順序付けし、次に値の順序付けを行う必要があります。

おすすめ記事