gpt4 book ai didi

c# - Linq 从字符串排序方向

转载 作者:太空狗 更新时间:2023-10-29 21:00:21 24 4
gpt4 key购买 nike

我正在尝试对一组用户进行排序。我可以访问排序属性和方向(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;
}

最佳答案

理想情况下,您希望使用 OrderByDescending - 您当然可以作弊:

public static class MyExtensionMethods 
{
public static IOrderedQueryable<TSource> OrderBy<TSource,TValue>(
this IQueryable<TSource> source,
Expression<Func<TSource,TValue>> selector,
bool asc)
{
return asc ? source.OrderBy(selector) : source.OrderByDescending(selector);
}
}

然后使用 OrderBy 传递选择器和 bool 值?

如果不需要静态类型,当然也可以从头开始动态构建表达式,比如 this short sample (本质上类似于动态 LINQ 库)。

关于c# - Linq 从字符串排序方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com