private static FeatureDataTable CreateTable(EsriTable table) { var fdt = new FeatureDataTable(); var columns = fdt.Columns; var fi = table.FieldInformation; for (var i = 0; i < fi.Count; i++) { var ft = fi.GetFieldType(i); Type netType; var primaryKey = false; switch (ft) { case Esri.FileGDB.FieldType.OID: netType = typeof(int); primaryKey = true; break; case Esri.FileGDB.FieldType.Single: netType = typeof(float); break; case Esri.FileGDB.FieldType.XML: netType = typeof(string); break; case Esri.FileGDB.FieldType.GlobalID: netType = typeof(int); break; case Esri.FileGDB.FieldType.GUID: netType = typeof(Guid); break; case Esri.FileGDB.FieldType.String: netType = typeof(string); break; case Esri.FileGDB.FieldType.Double: netType = typeof(double); break; case Esri.FileGDB.FieldType.Blob: case Esri.FileGDB.FieldType.Raster: netType = typeof(byte[]); break; case Esri.FileGDB.FieldType.Integer: netType = typeof(long); break; case Esri.FileGDB.FieldType.SmallInteger: netType = typeof(int); break; case Esri.FileGDB.FieldType.Date: netType = typeof(DateTime); break; case Esri.FileGDB.FieldType.Geometry: //Do not add geometry column continue; default: throw new InvalidOperationException("Unknown field type" + ft); } var dc = new DataColumn(fi.GetFieldName(i), netType) { AllowDBNull = fi.GetFieldIsNullable(i), //MaxLength = fi.GetFieldLength(i) }; if (netType == typeof(string)) { dc.MaxLength = fi.GetFieldLength(i); } columns.Add(dc); if (primaryKey) { fdt.PrimaryKey = new[] { dc } } ; } return(fdt); }
private static FeatureDataTable CreateTable(EsriTable table) { var fdt = new FeatureDataTable(); var columns = fdt.Columns; var fi = table.FieldInformation; for (var i = 0; i < fi.Count; i++) { var ft = fi.GetFieldType(i); Type netType; var primaryKey = false; switch (ft) { case Esri.FileGDB.FieldType.OID: netType = typeof(int); primaryKey = true; break; case Esri.FileGDB.FieldType.Single: netType = typeof(float); break; case Esri.FileGDB.FieldType.XML: netType = typeof(string); break; case Esri.FileGDB.FieldType.GlobalID: netType = typeof(int); break; case Esri.FileGDB.FieldType.GUID: netType = typeof(Guid); break; case Esri.FileGDB.FieldType.String: netType = typeof(string); break; case Esri.FileGDB.FieldType.Double: netType = typeof(double); break; case Esri.FileGDB.FieldType.Blob: case Esri.FileGDB.FieldType.Raster: netType = typeof(byte[]); break; case Esri.FileGDB.FieldType.Integer: netType = typeof(long); break; case Esri.FileGDB.FieldType.SmallInteger: netType = typeof(int); break; case Esri.FileGDB.FieldType.Date: netType = typeof(DateTime); break; case Esri.FileGDB.FieldType.Geometry: //Do not add geometry column continue; default: throw new InvalidOperationException("Unknown field type" + ft); } var dc = new DataColumn(fi.GetFieldName(i), netType) { AllowDBNull = fi.GetFieldIsNullable(i), //MaxLength = fi.GetFieldLength(i) }; if (netType == typeof(string)) dc.MaxLength = fi.GetFieldLength(i); columns.Add(dc); if (primaryKey) fdt.PrimaryKey = new[] { dc }; } return fdt; }