gpt4 book ai didi

c# - 动态创建 lambda 表达式 + linq + OrderByDescending

转载 作者:行者123 更新时间:2023-12-02 15:45:22 25 4
gpt4 key购买 nike

如何创建动态 lambda 表达式以传递到 linq 内的 orderby 函数中使用?

我基本上想要在 queryResults.OrderByDescending(myCustomGenerateLambdaExp); 中转换 queryResults.OrderByDescending();,其中 myCustomGenerateLambdaExp 应是包含 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();

希望这有帮助

关于c# - 动态创建 lambda 表达式 + linq + OrderByDescending,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com