リストがあり、OrderByを実行すると、値""
が空の要素が順序付きリストの一番上に移動します。代わりに、リストの一番下に配置したいと思います。私のコード:
var orderedList = list.OrderBy(o => o.Field).ToList();
方法はありますか?
var orderedList = list.OrderBy(o => string.IsNullOrEmpty(o.Field))
.ThenBy(o => o.Field)
.ToList();
false
が前に注文されるためtrue
、これは空でないすべての値を最初に配置します。
どれだけ効率的かはわかりませんが、次のことを試すことができます。
var orderedList = list.Where(r=> !string.IsNullOrWhiteSpace(r))
.OrderBy(o => o)
.Concat(list.Where(r => string.IsNullOrWhiteSpace(r))
.ToList();
""
すべての空白またはstring.Empty
null値をチェックしたくない場合は、それと比較できます。