private static ContainRuleAgrumentsResult ContainRuleAgrumentsForFirstElement( IEnumerable <Element> elements, Rule rule, Element firstElement, ContainRuleAgrumentsResult result) { var element = firstElement; Parallel.ForEach(elements, (Element secondElement) => { if (rule.IsRulePare(element, secondElement)) { result.Elements.Add(rule.Connect(element, secondElement)); result.IsElementFound = true; } }); return(result); }
private static ContainRuleAgrumentsResult ContainRuleAgruments( ConcurrentBag <Element> elements, Rule rule) { var result = new ContainRuleAgrumentsResult { Elements = new ConcurrentBag <Element>(elements), IsElementFound = false }; foreach (var firstElement in elements) { if (firstElement.ElementType.Name == rule.FirstArgumentType.Name) { result = ContainRuleAgrumentsForFirstElement(elements, rule, firstElement, result); } } return(result); }