【发布时间】:2021-02-16 02:59:10
【问题描述】:
我有以下 C# 类
public class Contact
{
public string Firstname { get; set; }
public string Lastname { get; set; }
public List<Phone> Phones { get; set; }
}
public class Phone
{
public string AreaCode { get; set; }
public string PhoneNumber { get; set; }
public bool IsMobile { get; set; }
}
下面是我尝试动态创建的示例表达式。
Expression<Func<Contact, bool>> isMobileExpression = p => p.Phone.First().IsMobile;
我想创建一个类似上面的表达式,但动态定义“p.Phone.First().IsMobile”表达式而不是硬编码它。 例如:
var paraName = "p => p.Phone.First().IsMobile";
Expression<Func<Contact, bool>> isMobileExpression = p => paraName;
这可能吗?感谢您提前提供任何帮助。????
【问题讨论】:
-
也许
Dictionary<string, Expression<Func<Contact, bool>>>包含属性名称和相应的表达式?如果它真的是动态的,你可能需要用 Roslyn 编译它 -
嗨,你想用它实现什么?你想设置不同的正则表达式来动态检查手机吗?
-
我打算用这个代码创建一个实用函数,它接受一个参数并返回另一个函数中使用的构建表达式。
-
Charlieface,你能提供一个如何用 Roslyn 编译的例子吗?谢谢。
-
可能是 DynamicLinq 的一种情况,但不确定解析器将如何处理 First(),因为我从未使用过它
标签: c# expression predicate