private ResultTreeNodeModel ConvertToTreeNodeModel(object obj, PropertyData propertyData) { if (propertyData.GetUnderLyingType().IsSimpleType() || obj == null) { return(new ResultTreeNodeModel { Name = propertyData.Name, Value = obj == null ? "null" : obj.ToString(), Type = propertyData.FriendlyTypeName }); } if (obj is IEnumerable enumerable && !(enumerable is BsonDocument)) { int count = enumerable.Cast <object>().Count(); var rowDoc = new ResultTreeNodeModel { Name = propertyData.Name + "[" + count + "]", Value = null, Type = propertyData.FriendlyTypeName }; var innerQueryResult = QueryResult.ToQueryResult(obj); rowDoc.Children.AddRange(ConvertToTreeNodeModels(innerQueryResult)); return(rowDoc); }