Domanda

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)
)

La mia domanda è come posso sorta su più attributi? Voglio ordinare la prima volta da Make.MAKE_English, poi da Model.MODL_English.

Come faccio a implementare questo?

Grazie,
~ Ck

È stato utile?

Soluzione

Se non è necessario ordinare sul posto, è possibile utilizzare la funzione OrderBy:

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

Il tuo esempio potrebbe essere:

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()

In realtà, questo è il modo corretto di fare questo (sembra che si sta utilizzando LINQ to SQL) dal momento che userà ORDER BY nell'istruzione SQL generato per ordinare i dati, invece di manualmente l'ordinamento sul client.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top