2011-10-20 109 views
1
m_ListOfsAllFields.OrderBy(Function(x) x.DisplayOrder) 

這裏我有DisplayOrder = 0的2個字段,所以orderby搞亂了,沒有正確排序。我如何使用orderby訂購這個集合?Linq OrderBy - 重複值

回答

5

這裏的問題是OrderBy不會修改相應的集合,而是會創建一個正確排序的新IEnumerable(Of T)實例。您需要將結果保存爲int m_listOfsAllFields值。

m_ListOfsAllFields = m_ListOfsAllFields.OrderBy(Function(x) x.DisplayOrder) 

如果這是List(Of T)一個實例,雖然你剛纔應該直接使用Sort方法。

m_ListOfsAllFields.Sort(Function (l, r) l.DisplayOrder.CompareTo(r.DisplayOrder)) 
2

如果兩個對象可以有一個OrderBy使用的屬性相同的值,要進一步分化,加ThenBy

Dim results = sequence.OrderBy(yourFunction).ThenBy(anotherFunction)