如何创建动态lambda表达式以传递给linq的orderby函数使用?
我基本上想要转换queryResults.OrderByDescending();
在queryResults.OrderByDescending(myCustomGeneratedLambdaExp);
其中myCustomGeneratedLambdaExp
是包含x => x.name
的字符串。
谢谢
我不确定您到底在哪里需要动态Lambda表达式。无论如何,动态生成lambda表达式的最佳方法是使用表达式树。这是有关该主题的两个很好的教程:
这段代码会生成一个lambda表达式,类似于您要求的表达式(“ x => x.name”):
MemberInfo member = typeof(AClassWithANameProperty).GetProperty("Name");
//Create 'x' parameter expression
ParameterExpression xParameter = Expression.Parameter(typeof(object), "x");
//Create body expression
Expression body = Expression.MakeMemberAccess(targetParameter, member);
//Create and compile lambda
var lambda = Expression.Lambda<LateBoundGetMemberValue>(
Expression.Convert(body, typeof(string)),
targetParameter
);
return lambda.Compile();
希望这可以帮助