示例#1
0
        private IEnumerable <TwoDocumentsElement> EnumerateTwoBsonDocumentsElements(BsonDocument document1, BsonDocument document2)
        {
            if (_enumerateElements == null)
            {
                _enumerateElements = new EnumerateElements {
                    Options = _enumerateElementsOptions
                }
            }
            ;
            document1 = _enumerateElements.GetFlatDocument(document1);
            document2 = _enumerateElements.GetFlatDocument(document2);

            // enumerate first all elements of document1
            foreach (var element in document1.Elements)
            {
                if (_elementsToCompare != null && !_elementsToCompare.ContainsKey(element.Name))
                {
                    continue;
                }
                TwoDocumentsElement twoDocElement = new TwoDocumentsElement();
                twoDocElement.Name   = element.Name;
                twoDocElement.Value1 = element.Value;
                if (document2.Contains(element.Name))
                {
                    twoDocElement.Value2 = document2[element.Name];
                }
                yield return(twoDocElement);
            }

            // then enumerate elements of document2 that dont exist in document1
            foreach (var element in document2.Elements)
            {
                if (!document1.Contains(element.Name) && (_elementsToCompare == null || _elementsToCompare.ContainsKey(element.Name)))
                {
                    TwoDocumentsElement twoDocElement = new TwoDocumentsElement();
                    twoDocElement.Name   = element.Name;
                    twoDocElement.Value2 = element.Value;
                    yield return(twoDocElement);
                }
            }
        }
示例#2
0
        private IEnumerable<TwoBsonDocumentsElement> EnumerateTwoBsonDocumentsElements(BsonDocument document1, BsonDocument document2)
        {
            if (_enumerateElements == null)
                _enumerateElements = new EnumerateElements { Options = _enumerateElementsOptions };
            document1 = _enumerateElements.GetFlatDocument(document1);
            document2 = _enumerateElements.GetFlatDocument(document2);

            // enumerate first all elements of document1
            foreach (var element in document1.Elements)
            {
                if (_elementsToCompare != null && !_elementsToCompare.ContainsKey(element.Name))
                    continue;
                TwoBsonDocumentsElement twoDocElement = new TwoBsonDocumentsElement();
                twoDocElement.Name = element.Name;
                twoDocElement.Value1 = element.Value;
                if (document2.Contains(element.Name))
                    twoDocElement.Value2 = document2[element.Name];
                yield return twoDocElement;

            }

            // then enumerate elements of document2 that dont exist in document1
            foreach (var element in document2.Elements)
            {
                if (!document1.Contains(element.Name) && (_elementsToCompare == null || _elementsToCompare.ContainsKey(element.Name)))
                {
                    TwoBsonDocumentsElement twoDocElement = new TwoBsonDocumentsElement();
                    twoDocElement.Name = element.Name;
                    twoDocElement.Value2 = element.Value;
                    yield return twoDocElement;
                }
            }
        }