IList (Of T). Сортировать помощь - PullRequest
1 голос
/ 12 мая 2009
Dim classCodeDetails As List(Of ClassCodeDetail) =     
    db.ClassCodeHeaders.Single(Function(cch)
        cch.CLCH_ID = classCodeHeaderId
    ).ClassCodeDetails.ToList()

classCodeDetails.Sort(Function(c1, c2)  
    c1.Make.MAKE_English.CompareTo(c2.Make.MAKE_English)
)

У меня вопрос, как я могу сортировать по нескольким атрибутам? Я хочу отсортировать сначала по Make.MAKE_English, затем по Model.MODL_English.

Как мне это реализовать?

Спасибо
~ Ск

1 Ответ

2 голосов
/ 12 мая 2009

Если вам не нужна сортировка на месте, вы можете использовать функцию OrderBy:

Dim sortedList = list.OrderBy(Function(x) x.Prop1).ThenBy(Function(x) x.Prop2)

Ваш пример будет:

Dim classCodeDetails As List(Of ClassCodeDetail) = _
   db.ClassCodeHeaders.Single(Function(cch) cch.CLCH_ID = classCodeHeaderId).ClassCodeDetails _
  .OrderBy(Function(c1) c1.Make.MAKE_English) _
  .ThenBy(Function(c1) c1.Make.MODL_English) _
  .ToList()

Фактически, это правильный способ сделать это (кажется, вы используете LINQ to SQL), поскольку он будет использовать ORDER BY в сгенерированном операторе SQL для сортировки данных вместо ручной сортировки на клиенте.

...