Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }