Пример #1
0
        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);
        }
Пример #2
0
        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);
        }