如果我有一个列表并执行 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
会将所有非空值放在首位。
不太确定它的效率是多少:P,但您可以尝试以下方法。
var orderedList = list.Where(r=> !string.IsNullOrWhiteSpace(r))
.OrderBy(o => o)
.Concat(list.Where(r => string.IsNullOrWhiteSpace(r))
.ToList();
如果您不想检查所有空白或空值,您可以将其与""
或进行比较。string.Empty