是否可以动态地创建这个linq语句?

本文关键字:linq 语句 创建 动态 是否 | 更新日期: 2023-09-27 18:14:14

我正在创建一个规则验证类-没什么特别的。

我想这样设置属性:

public int MaxLoanAmount { get; set; }

数据将像这样验证。_app指的是通过构造函数注入的数据。

bool MaxLoanAmountValid
{
   get { return _app.LoanAmount >= MaxLoanAmount; }
}

我可以构造一些if逻辑来测试我的每个属性是否设置,验证它们并返回结果,但是我想尝试比那更聪明一点。

我想知道是否可以建立一个动态表达式,所以当MaxLoanAmount设置时,我添加"MaxLoanAmountValid",等等"MaxLoanAmountValid and MinLoanAmountValid"等。

提前感谢。

是否可以动态地创建这个linq语句?

是的,你可以动态地构建一个Linq表达式树,既可以使用。net api,也可以使用一些使工作更容易的免费工具。有些可以将字符串解析为表达式,因此您所要做的就是构建字符串。查看一个几乎相同问题的答案中的链接:动态构建Linq Lambda表达式

如果你想更"聪明",你可以动态地得到当前的属性名称在它的Set方法使用反射像这样的MethodBase.GetCurrentMethod().Name