1. ホーム
  2. c#

[解決済み] LINQのNULL列による順序付け(順序は昇順でNULLは最後)。

2022-04-24 01:27:43

質問

商品のリストを価格順に並べ替えたいのですが、どうすればいいですか?

結果セットは、価格の低いものから高いものまで、商品を列挙する必要があります。 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

解決方法は?

両方のカラムを同じorderbyに入れてみてください。

orderby p.LowestPrice.HasValue descending, p.LowestPrice

そうでなければ、各orderbyはコレクションに対して毎回順番を入れ替える個別の操作になります。

これは、値のあるものを最初に、"それから"の順に並べる必要があります。