2011-10-20 73 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)