public override bool Evaluate(Record r) { bool any = false; foreach (bool value in r.SubRecords.Where(x => x.Name == this.Parent.Record.name).Select(x => this.Evaluate(r, x))) { if (!value) { return false; } any = true; } return any; }