private object CastToColumnType(string columnName, string value) { Guard.AgainstNull(columnName, "Column Name"); if (string.Equals(columnName, "rowid", StringComparison.InvariantCultureIgnoreCase)) { return(Convert.ToInt32(value)); } if (string.Equals(columnName, "obj", StringComparison.InvariantCultureIgnoreCase)) { int index = Convert.ToInt32(this.Get("rowid")); TableObjVariable objvariable = new TableObjVariable(this, index); return(geometryfactory.GetGeometryFromVariable(objvariable)); } string columntypestring = this.wrapper.Evaluate("ColumnInfo({0},{1},{2})".FormatWith(this.tableName, columnName, 3)); int columntypeval = Convert.ToInt32(columntypestring); ColumnTypes columntype = (ColumnTypes)columntypeval; switch (columntype) { case ColumnTypes.CHAR: return(value); case ColumnTypes.DECIMAL: return(Convert.ToDecimal(value)); case ColumnTypes.INTEGER: return(Convert.ToInt32(value)); case ColumnTypes.SMALLINT: return(Convert.ToInt16(value)); case ColumnTypes.DATE: break; case ColumnTypes.LOGICAL: return(value == "T"); case ColumnTypes.GRAPHIC: break; case ColumnTypes.FLOAT: return(Convert.ToDouble(value)); case ColumnTypes.TIME: break; case ColumnTypes.DATETIME: DateTime date; bool parsed = DateTime.TryParseExact(value, "yyyyMMddHHmmssfff", null, System.Globalization.DateTimeStyles.None, out date); if (parsed) { return(date); } else { return(null); } default: return(null); } return(null); }