/// <summary> /// Compile any missing Criteria for each rule. /// </summary> private void CompileRules() { foreach (RuleGroup ruleGroup in ruleGroups.Where(ruleGroup => ruleGroup.Criteria == null)) { try { List <PredicateBuilder.Filter> filters = new List <PredicateBuilder.Filter>(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (Rule rule in ruleGroup.rule) { List <string> propertyNames = rule.property.Split('.').ToList(); if (propertyNames[0] == "Parent") { propertyNames[0] = "SafeParent"; } PredicateBuilder.Filter filter = new PredicateBuilder.Filter { PropertyName = string.Join(".", propertyNames), Operation = PredicateBuilder.Op.Equals, Value = rule.value }; filters.Add(filter); } Expression <Func <CIXMessage, bool> > newCriteria = PredicateBuilder.GetExpression <CIXMessage>(ruleGroup.type, filters); ruleGroup.Criteria = newCriteria; } catch (Exception e) { LogFile.WriteLine("Error compiling rulegroup {0} : {1}", ruleGroup, e.Message); } } }
/// <summary> /// Compile any missing Criteria for each rule. /// </summary> private void CompileRules() { foreach (RuleGroup ruleGroup in ruleGroups.Where(ruleGroup => ruleGroup.Criteria == null)) { try { List<PredicateBuilder.Filter> filters = new List<PredicateBuilder.Filter>(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (Rule rule in ruleGroup.rule) { List<string> propertyNames = rule.property.Split('.').ToList(); if (propertyNames[0] == "Parent") { propertyNames[0] = "SafeParent"; } PredicateBuilder.Filter filter = new PredicateBuilder.Filter { PropertyName = string.Join(".", propertyNames), Operation = PredicateBuilder.Op.Equals, Value = rule.value }; filters.Add(filter); } Expression<Func<CIXMessage, bool>> newCriteria = PredicateBuilder.GetExpression<CIXMessage>(ruleGroup.type, filters); ruleGroup.Criteria = newCriteria; } catch (Exception e) { LogFile.WriteLine("Error compiling rulegroup {0} : {1}", ruleGroup, e.Message); } } }