Pages

2016/08/16

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;
Related Posts Plugin for WordPress, Blogger...