如何将集合中的字段与父对象中的字段进行比较

How to compare a field in a collection to a field in the parent object

使用 here 中的 Angular 演示,我添加了 HospitalVisit 对象的集合,我想回答这个问题,“患者是否去过州外医院”。

问你可以看到我只能将HospitalVisit.State字段与同一个当前对象(或动态数据源)上的另一个字段字符串进行比较,但不能引用父对象。我该怎么做?

类似

var p = new Patient();
        var homeSate = p.State;
        var hasBeenOutOfState = p.HospitalVisits.Any(h=> h.State != homeSate);

您无法从 sub-sources 获得对主要来源的引用。相反,您应该声明一个 in-rule 方法并以这种方式获得所需的值。例如,您可以在 Patient 类型中声明以下方法:

[ Method( DisplayName = "Out of State" ) ]
public bool HasOutOfStateVisits(List<HospitalVisit> visits)
{
   return visits != null && visits.Any(v => v.State != this.State);
}

然后像这样在您的规则中使用它:

Check if State has any value and Out of State(HospitalVisits) equals to True