Linq OrderBy - на повторяющихся значениях - PullRequest
1 голос
/ 20 октября 2011
m_ListOfsAllFields.OrderBy(Function(x) x.DisplayOrder)

здесь у меня DisplayOrder = 0 для 2 полей, так что порядок не работает, а порядок не правильный.Как я могу использовать orderby для заказа этой коллекции?

Ответы [ 2 ]

5 голосов
/ 20 октября 2011

Проблема здесь в том, что OrderBy не изменяет коллекцию на месте, а создает новый экземпляр IEnumerable(Of T), который упорядочен правильно. Вам нужно сохранить результат в значение 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 голосов
/ 20 октября 2011

Если два объекта могут иметь одинаковое значение для свойства, используемого в одном OrderBy, и вы хотите провести дальнейшую дифференциацию, добавьте ThenBy.

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