LINQ multi ordine di

Ho creato una funzione che ha il parametro follwing:

List<Expression<Func>> orderBy = null 

Questo parametro è facoltativo, Se è pieno dovrebbe creare per me un ordine e poi per cost, in modo che io possa ordinare il risultato sul server SQL.

Provai:

  IOrderedQueryable temp = null; foreach (Expression<Func> func in orderBy) { if (temp == null) { temp = catalogProducts.OrderBy(func); } else { temp = temp.ThanBy(func); } } 

Ma the than By non viene riconciliato. Qualcuno sa come posso risolvere questo problema?


L’ho cambiato in .ThenBy () ma questo è permesso solo direttamente dopo .OrderBy () e non su un IOrderedQueryable

so temp = catalogProducts.OrderBy (func) .ThenBy (func); è consentito ma temp = catalogProducts.OrderBy (func); temp = temp.ThenBy (func); issn’t

Qualche altro suggerimento?

Due problemi; in primo luogo, ThanBy dovrebbe essere ThenBy ; in secondo luogo, ThenBy è disponibile solo sul tipo generico , IOrderedQueryable .

Quindi cambia in:

  IOrderedQueryable temp = null; foreach (Expression> func in orderBy) { if (temp == null) { temp = catalogProducts.OrderBy(func); } else { temp = temp.ThenBy(func); } } 

e dovresti essere ordinato.

prova questo

  IOrderedQueryable temp = null; foreach (Expression> func in orderBy) { if (temp == null) { temp = catalogProducts.OrderBy(func); } else { temp = temp.OrderBy(func); } } 
  foreach (Expression> func in orderBy) { catalogProducts = catalogProducts.OrderBy(func); } 

Questo sarà OK.