根据字符串列在数据表中添加计算列

时间:2019-05-30 13:18:50

标签: c# datatable calculated-columns

我将数据从CSV文件导入到数据表中。

现有供应商在一栏中将期间发送为“ 201901”。 新的供应商将期间分为两列,例如“ 2019”年和“ JAN”月。

我想将两列合并为'201901',以便其余代码逻辑像以前一样工作。

当我查看Datatable.Columns.Add的文档时,发现所有示例仅是数字表达式,与列表达式中的字符串或日期无关。

这是我的代码。 这些来自CSV文件,因此当导入到数据表时,这些列具有2019年和JAN数据。

DT.Columns.Add("MAT_YEAR", typeof(string));  

DT.Columns.Add("MAT_MONTH", typeof(string));

我想基于以上两列获取计算值

DT.Columns.Add("MONTHNUM", typeof(int),"DateTime.ParseExact(MAT_MONTH,\"MMM\",null).Month");

DT.Columns.Add("MAT_PERIOD", typeof(string), "MAT_YEAR + Convert.ToString(MONTHNUM)");

我在DateTime.Parse上遇到错误

如何根据字符串或日期在Datatable中创建计算列?

1 个答案:

答案 0 :(得分:0)

也许尝试以下方法。

DT.Columns.Add("MAT_YEAR", typeof(string));
DT.Columns.Add("MAT_MONTH", typeof(string));

DT.Columns.Add("MONTHNUM", typeof(string),"DateTime.ParseExact(\"MAT_MONTH + \"01 2000\", \"MMM dd yyyy\", CultureInfo.InvariantCulture).Month.ToString(\"00\");
DT.Columns.Add("MAT_PERIOD", typeof(string), "MAT_YEAR + MONTHNUM");

全部归功于查尔斯·梅(Charles May),完全正确