C#のOrderByでnullを後ろにもっていく

並び替えでnullを後ろに配置する

LINQ で OrderBy をする際に、対象に null が含まれていると、null が先頭になってしまいますね。


null をソート時に制御する

null を後ろに持って行きたい場合は、いったん null ではないキーを並び替えた後、ThenBy でもう一度並び替えをします。

var lst = new List<string>() { "A", "B", "C", null };

// null, A, B, C
var orderbyList = lst.OrderBy(x => x);

// A, B, C, null
var orderbyList2 = lst.OrderByDescending(x => !string.IsNullOrEmpty(x)).ThenBy(x => x);

var orderbyList3 = from x in lst
                   orderby !string.IsNullOrEmpty(x) descending, x
                   select x;

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する