在项目中,需要将DataTable内容存入到DBF中,DBF要求某列的长度是固定的,不是可变得。因此需要计算出DatatTable中某一列的最大内容长度,从而定义DBF字段中的长度。方法实现如下:
///实现思路,增加一列用来存放内容的长度,然后对记录长度的这列用max表达式计算出最大
///colName:列名
public static int GetMaxLength(DataTable dt,string colName) { DataColumn maxLengthColumn = new DataColumn();//从新定义一列,用来存放内容的长度 maxLengthColumn.ColumnName = "MaxLength";//新列列名 maxLengthColumn.DataType = typeof(Int32);//新列类型 //其中name为列名,用到的函数为len maxLengthColumn.Expression = "len(convert("+colName+",'System.String'))";//len表达式用来计算长度 dt.Columns.Add(maxLengthColumn); //用到的函数为Max object maxLength = dt.Compute("Max(MaxLength)", "");//max表达式进行计算 dt.Columns.Remove(maxLengthColumn);//移除新增列,不破坏原有DatatTable return Convert.ToInt32(maxLength); }