LINQ 动态赋值表达式

本文关键字:表达式 赋值 动态 LINQ | 更新日期: 2023-09-27 18:30:38

我有以下代码,我宁愿动态定义。

var candidates = People.Where(x=> (x.Age >18 && x.Age < 25)) .AsQueryable().Select(  c=> { c.Category = "F190 MISSING" ; return c; });

但是,我想要的是将上述赋值定义为在运行时执行的字符串,如下所示

String Conditional= "c=> {  c.Category = @0; return c; }";
String[]  ExpressionParameters = new [] {"F190 MISSING"};
var candidates = People.Where(x=> (x.Age >18 && x.Age < 25)).AsQueryable().Select( Conditional,ExpressionParameters);

到目前为止,通过我的尝试,我收到了表达式预期的错误消息或 PERSON 中不存在属性 C。如何更好地动态定义赋值表达式?提前谢谢。

LINQ 动态赋值表达式

第一个不起作用,因为 c# 编译器无法将多行 lambda 转换为表达式树(并且IQueryable.Select需要表达式)。

C# 和 Visual Basic 编译器只能生成表达式树 来自表达式 lambda(或单行 lambda)。它无法解析 语句 lambda(或多行 lambda)。有关以下内容的更多信息 C# 中的 lambda 表达式,请参阅 Lambda 表达式(C# 编程) 指南);(...).

第二个可以使用像DynamicLINQ这样的库来完成。