【发布时间】:2019-02-01 23:14:56
【问题描述】:
是否可以为 linq 排序返回自定义 lambda?
// This is how I usually order stuff
quarable.OrderBy(d => d.Something);
// This is the signature of OrderBy I'm aiming for
IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
我想要一个看起来像这样的结果
static class SortingDevicesFiltersMethods {
public static Expression<Func<TSource, TKey>> GetLambda(this SortingDevicesFilters filter)
{
return (d => d.State);
}
}
可以这样称呼它
quarable.OrderBy(someSortEnum.GetLambda());
这样的事情可能吗?
【问题讨论】:
-
那你写的代码能用吗?
-
由于您像静态方法一样调用扩展方法,因此您必须传递
SortingDevicesFilters参数 -
抱歉打错了,不,代码不起作用。它也不编译。
-
那你需要解释什么不能编译,什么不能工作,给我们错误信息等等。
-
这可能可以通过创建expression tree,但我们不知道
SortingDevicesFilters是什么或您想如何使用它来创建动态过滤器。