有人可以帮我将下面的语句转换成一系列表达式树调用吗?我试图让选择部分正常运转。
results.GroupBy(x => x.EntityID).Select(y => y.OrderBy(o => o.ResultOrder).FirstOrDefault());
我尝试调试并在检查器中查看表达式,但这对我来说毫无意义。我已经完成了一些工作,例如groupby:
var groupAssign = Expression.Lambda<Func<TransViewModel, int>>(viewEntityIDProp, viewParam);
var grouped = Expression.Call(
typeof (Queryable),
"GroupBy",
new Type[] { viewModelType, typeof(int) },
new Expression[] { theBigResultset, groupAssign }
);
答案 0 :(得分:0)
我不确定你在这里尝试实现的目标,但总是帮助我做这些事情的一个工具是Linqpad,它有一个Dump扩展方法,可以放在你的表达式上。您可以将lambdas声明为Expression<Func<T, TResult>>
,然后对变量使用Dump方法以获取可用于执行转换的可读表达式树。可能还有一些免费工具可用,但我不知道这些。
在你的情况下,你很可能有:
Expression<Func<IEnumerable<TransViewModel>, IEnumerable<TransViewModel>>> stuff = results => results.GroupBy(x => x.EntityID).Select(y => y.OrderBy(o => o.ResultOrder).FirstOrDefault());
您可以调用Dump方法并获取相应的表达式树。