开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜