1

リストがあり、OrderByを実行すると、値""が空の要素が順序付きリストの一番上に移動します。代わりに、リストの一番下に配置したいと思います。私のコード:

var orderedList = list.OrderBy(o => o.Field).ToList();

方法はありますか?

4

2 に答える 2

8
var orderedList = list.OrderBy(o => string.IsNullOrEmpty(o.Field))
                      .ThenBy(o => o.Field)
                      .ToList();

falseが前に注文されるためtrue、これは空でないすべての値を最初に配置します。

于 2013-03-19T11:28:48.863 に答える
1

どれだけ効率的かはわかりませんが、次のことを試すことができます。

var orderedList = list.Where(r=> !string.IsNullOrWhiteSpace(r))
                      .OrderBy(o => o)
                      .Concat(list.Where(r => string.IsNullOrWhiteSpace(r))
                      .ToList();

""すべての空白またはstring.Emptynull値をチェックしたくない場合は、それと比較できます。

于 2013-03-19T11:28:50.753 に答える