将用户定义的规则转换为 C# 表达式

Convert a user defined rule to C# expression

提问人:reuben2crown 提问时间:11/8/2023 更新时间:11/8/2023 访问量:66

问:

我有一组由用户定义的规则,我需要帮助将其转换为可以使用 linq 执行的规则表达式。

下面是示例 JSON 有效负载

{
  "Rules": [
    {
      "Field": "year",
      "Condition": "Equals",
      "Value": "2020",
      "Operator": "And"
    },
    {
      "Field": "color",
      "Condition": "NotEquals",
      "Value": "black",
      "Operator": "And"
    },
    {
      "Field": "amount",
      "Condition": "GreaterThan",
      "Value": "100",
      "Operator": "Or"
    },
    {
      "Field": "country",
      "Condition": "NotEquals",
      "Value": "US"
    }
  ]
}

要查询的数据如下表所示

同上 用户 ID 问键
01 22 1999
02 22 150
03 40 国家 我们
04 22 颜色
05 40 颜色
06 40 2020
07 22 国家 法国

在应用规则之前,可以将这些内容加载到列表中。该规则应该一次评估一个用户。

我已将JSON转换为下面的模型,但我无法弄清楚如何实现规则

public class BusinessRule
{
    public List<RuleModel> Rules { get; set; }
}

public class RuleModel
{
    public string Field { get; set; }
    public RuleConditionEnum Condition { get; set; }
    public string Value { get; set; }
    public RuleOperatorEnum? Operator { get; set; }
}

public enum RuleConditionEnum
{
    Equals = 1,
    NotEquals,
    Contains,
    NotContains,
    StartsWith,
    EndsWith,
    GreaterThan,
    LessThan,
    GreaterOrEqual,
    LessOrEqual
}

public enum RuleOperatorEnum
{
    And = 1,
    Or
}

我将不胜感激示例代码的任何帮助。

C# LINQ ASP.NET 核心 规则引擎

答: 暂无答案