【发布时间】:2018-10-18 12:24:33
【问题描述】:
我想在 C# 中使用表达式树创建以下 lambda 表达式:
var result = dataList.GroupBy(x => new { x.Prop1, x.Prop2 })
如何将具有两个属性的匿名类型作为 LINQ 表达式 (lambdaExp)?
这是我目前得到的:
IQueryable<GraphData> queryableData = graphDataList.AsQueryable();
ParameterExpression pe = Expression.Parameter(typeof(GraphData), "x");
Expression prop1 = Expression.PropertyOrField(pe, "Prop1");
Expression prop2 = Expression.PropertyOrField(pe, "Prop2");
var lambdaExp = Expression.Lambda<Func<GraphData, object>>( new { prop1, prop2 } , pe); //doesn't compile
MethodCallExpression groupByCallExpression = Expression.Call(
typeof(Queryable),
"GroupBy",
new Type[] { typeof(GraphData), typeof(object) },
queryableData.Expression,
lambdaExp);
IQueryable<GraphData> result = queryableData.Provider.CreateQuery<GraphData>(groupByCallExpression);
【问题讨论】:
-
你已经尝试了什么?显示你的负担和你被困在哪里。否则我们只能猜测您的问题可能是什么。
-
这个答案可能会解决您的问题:stackoverflow.com/a/17694121/361842
标签: c# linq lambda expression