动态创建lambdas表达式+ linq + OrderByDescending

如何创建一个动态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( Expression.Convert(body, typeof(string)), targetParameter ); return lambda.Compile(); 

希望这可以帮助

请参见动态LINQ

或者,您可以在C#4中使用switch语句,Reflection或dynamic类型,以根据提供的字段名称返回值。

这也是以前的死亡