ArcGIS4LocalGovernment.AAState.getConfigDataTable C# (CSharp) Method

getConfigDataTable() private static method

private static getConfigDataTable ( ) : DataTable
return System.Data.DataTable
        private static DataTable getConfigDataTable()
        {
            try
            {
                DataTable dt = new DataTable();

                _tab = Globals.FindTable(ArcMap.Document.FocusMap, _defaultsTableName);
                if (_tab == null)
                    return null;

                for (int i = 0; i < _tab.Fields.FieldCount; i++)
                {
                    if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeString)
                        dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
                    else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGlobalID)
                        dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
                    else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGUID)
                        dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
                    else if (_tab.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeDate)
                        dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(string));
                    else
                        dt.Columns.Add(_tab.Fields.get_Field(i).Name, typeof(int));
                }

                ICursor cur = _tab.Search(null, true);
                IRow row;
                System.Collections.ArrayList ar = new System.Collections.ArrayList();

                while ((row = cur.NextRow()) != null)
                {
                    for (int i = 0; i < _tab.Fields.FieldCount; i++)
                    {
                        ar.Add(row.get_Value(i));
                    }
                    dt.Rows.Add(ar.ToArray());
                    ar.Clear();
                }
                if (row != null)
                {
                    Marshal.ReleaseComObject(row);

                    GC.WaitForFullGCComplete();
                    row = null;
                }
                if (cur != null)
                {
                    Marshal.ReleaseComObject(cur);
                    GC.Collect(300);
                    GC.WaitForFullGCComplete();
                    cur = null;
                }

                return dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show(A4LGSharedFunctions.Localizer.GetString("AttributeAssistantEditorChain0") + ex.Message);
                return null;
            }
        }