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); } } }
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; } } }