Linq 从字符串排序方向
我正在尝试对一组用户进行排序。我可以访问排序属性和方向(asc、desc)。我当前的查询订单如下。但正如您所看到的,它并没有考虑排序方向。如何构建此表达式,而无需使用 Dynamic Linq,或为“asc”或“desc”排序方向添加另一组语句。
public override IQueryable<DalLinq.User> GetSort(IQueryable<DalLinq.User> query)
{
//SelectArgs.SortDirection <- Sort Direction
switch (SelectArgs.SortProperty)
{
case "LastName":
query = query.OrderBy(p => p.LastName);
break;
case "FirstName":
query = query.OrderBy(p => p.FirstName);
break;
default:
query = query.OrderBy(p => p.UserName);
break;
}
return query;
}
I am trying to sort a set of Users. I have access to the sorting property and direction (asc, desc). My current order by query is below. But as you can see it doesn't account for the sort direction. How do can I build this expression without having to use Dynamic Linq, or adding another set of statements for "asc" or "desc" sort direction.
public override IQueryable<DalLinq.User> GetSort(IQueryable<DalLinq.User> query)
{
//SelectArgs.SortDirection <- Sort Direction
switch (SelectArgs.SortProperty)
{
case "LastName":
query = query.OrderBy(p => p.LastName);
break;
case "FirstName":
query = query.OrderBy(p => p.FirstName);
break;
default:
query = query.OrderBy(p => p.UserName);
break;
}
return query;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
理想情况下,您想要使用 OrderByDescending - 当然您可以作弊:
并使用 OrderBy 传递选择器和布尔值?
如果您不需要静态类型,当然也可以从头开始动态构建表达式 - 就像 这个简短的示例(本质上与动态 LINQ 库类似)。
Ideally, you want to use
OrderByDescending
- you could of course cheat:And use
OrderBy
passing in the selector and a bool?If you don't need the static typing, you can also build the expressions dynamically from the ground up, of course - like this short sample (similar in nature to the dynamic LINQ library).
我认为这将是一个 if 语句,没有其他简单的方法可以做到这一点,即:
也看看这个: 使用 Lambda/Linq to 对象对列表进行排序
It'd be an if statement I think, no other simple way to do it, i.e.:
Have a look at this as well: Sorting a list using Lambda/Linq to objects
查看 CS 代码示例。有一个动态Linq 的例子。
从示例中:
按代码订购:
但请务必检查用户输入!
Have a look at the CS Code Samples. There are a dynamic Linq examples.
From the samples:
Order by Code:
But be sure that you check User Input!