1
如果我有一個列表,並且我執行OrderBy,則具有空值""
的元素將轉到排序列表的頂部。相反,我想把它們放在列表的最底部。我的代碼:我可以更改LINQ上的「相等比較器」嗎?
var orderedList = list.OrderBy(o => o.Field).ToList();
有沒有辦法?
如果我有一個列表,並且我執行OrderBy,則具有空值""
的元素將轉到排序列表的頂部。相反,我想把它們放在列表的最底部。我的代碼:我可以更改LINQ上的「相等比較器」嗎?
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
比較,如果你不想檢查所有的空白或空值。
'IsNullOrWhiteSpace'?爲什麼? – 2013-03-19 11:30:53
@defaultlocale,只是爲了檢查所有類型的空字符串,在答案中也提到了這一點。 – Habib 2013-03-19 11:32:05