private void AddToDataTable(string name, BsonValue value) { if (value is BsonDocument) { AddToDataTable(name, (BsonDocument)value); } else if (value is BsonArray) { BsonArrayToDataTable arrayToDataTable = new BsonArrayToDataTable(this, name, (BsonArray)value); _arrays.Add(arrayToDataTable); } else { //string textValue; object dataValue; if (value is BsonTimestamp) { dataValue = value.AsBsonTimestamp.ToLocalTime().ToString("s"); } else if (value is BsonNull) { //textValue = string.Empty; dataValue = DBNull.Value; } else { dataValue = value.ToString(); } if (name == null) { name = "value"; } if (!_dt.Columns.Contains(name)) { DataColumn column = _dt.Columns.Add(name); column.SetOrdinal(++_lastColumnIndex); } else { _lastColumnIndex = _dt.Columns[name].Ordinal; } //if (name == null) // name = "value"; _row[name] = dataValue; } }
private void AddArraysToDataTable() { object[] rowValues = _row.ItemArray; bool first = true; while (true) { bool findValue = false; for (int i = 0; i < _arrays.Count;) { BsonArrayToDataTable arrayToDataTable = _arrays[i]; //if (arrayToDataTable.values.MoveNext()) //if (MoveNext(arrayToDataTable.values)) if (arrayToDataTable.AddNextValueToDataTable()) { findValue = true; //AddToDataTable(arrayToDataTable.values.Current, arrayToDataTable.name); i++; } else { _arrays.RemoveAt(i); } } if (!findValue) { break; } if (!first) { _dt.Rows.Add(_row); } first = false; _row = _dt.NewRow(); _row.ItemArray = rowValues; } }
private void AddToDataTable(string name, BsonValue value) { if (value is BsonDocument) { AddToDataTable(name, (BsonDocument)value); } else if (value is BsonArray) { BsonArrayToDataTable arrayToDataTable = new BsonArrayToDataTable(this, name, (BsonArray)value); _arrays.Add(arrayToDataTable); } else { //string textValue; object dataValue; if (value is BsonTimestamp) { dataValue = value.AsBsonTimestamp.ToLocalTime().ToString("s"); } else if (value is BsonNull) { //textValue = string.Empty; dataValue = DBNull.Value; } else { dataValue = value.ToString(); } if (name == null) name = "value"; if (!_dt.Columns.Contains(name)) { DataColumn column = _dt.Columns.Add(name); column.SetOrdinal(++_lastColumnIndex); } else _lastColumnIndex = _dt.Columns[name].Ordinal; //if (name == null) // name = "value"; _row[name] = dataValue; } }