如何基于列的字符串名称执行 LINQ OrderBy
如果我有
public ActionResult ListExpenseItems(long id)
{
IQueryable<I_ITEM> expenseItems = er.GetExpenseItems(id);
return PartialView(expenseItems );
}
并且 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;
}
如果我将一个字符串作为参数传递给 LINQ 方法,例如 "ExpenseTitle"
,我将如何 OrderBy i.ExpenseTitle
以便 orderby总是匹配字符串参数?
这种逻辑..但实际上是正确的:
db.I_ITEM.OrderBy(x => (orderBy == 'date') ? x.Date : (orderBy == 'id') ? x.Id : (orderBy == 'cost') ? x.Cost : x.Id);
If I had
public ActionResult ListExpenseItems(long id)
{
IQueryable<I_ITEM> expenseItems = er.GetExpenseItems(id);
return PartialView(expenseItems );
}
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);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为前面的问题可能会解决您的问题
动态 LINQ OrderBy
强类型动态 Linq 排序
或者您可以使用动态 Linq 库。
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.