How to perform LINQ OrderBy based on a stringname for column
If I had
public ActionResult ListExpenseItems(long id)
{
IQueryable<I_ITEM> expenseItems = er.GetExpenseItems(id);
return PartialView(expenseI开发者_如何学编程tems );
}
and the LINQ
public IQueryable<I_ITEM> GetExpenseItems(long id)
{
return from i in db.I_ITEM
where i.ExpenseId == id
orderby i.ExpenseItemId ascending
select i;
}
If I passed a string in as a parameter to the LINQ method, say "ExpenseTitle"
, how would I do OrderBy i.ExpenseTitle
so that orderby always matches the string parameter?
This kind of logic.. but actually correct:
db.I_ITEM.OrderBy(x => (orderBy == 'date') ? x.Date : (orderBy == 'id') ? x.Id : (orderBy == 'cost') ? x.Cost : x.Id);
I think this previous questions might solve your problem
Dynamic LINQ OrderBy
Strongly typed dynamic Linq sorting
or you can use the Dynamic Linq library.
精彩评论