C# 表达式“System.Data.UnaryNode”中的类型不匹配

C# 表达式“System.Data.UnaryNode”中的类型不匹配,c#,datatable,substring,unary-operator,datacolumn,C#,Datatable,Substring,Unary Operator,Datacolumn,我有一个数据表,其列strDate包含类似“20150519”的值。 我想在数据表中创建一个新的DateTime列,而不使用包含strDate的日期表示形式的循环 我试过这个: table.Columns.Add("NewDate", typeof(DateTime)).Expression = "CONVERT((SUBSTRING(strDate, 0, 5) + '/' + SUBSTRING(strDate, 5,

我有一个数据表,其列strDate包含类似“20150519”的值。 我想在数据表中创建一个新的DateTime列,而不使用包含strDate的日期表示形式的循环

我试过这个:

table.Columns.Add("NewDate", typeof(DateTime)).Expression = 
            "CONVERT((SUBSTRING(strDate, 0, 5) + '/' + 
                      SUBSTRING(strDate, 5, 2) +  + '/' + 
                      SUBSTRING(strDate, 7, 2)), 'System.DateTime')";
但它给出了一个错误:表达式“System.Data.UnaryNode”中的类型不匹配

这里的一个基本问题是:这里使用的是什么子字符串函数?SQL还是.Net?从文档中我了解到它不是SQL。但是.Net的子字符串是与错误消息内联的一元运算符,但是我认为我的语句应该如下所示:

table.Columns.Add("NewDate", typeof(DateTime)).Expression = 
           "CONVERT((strDate).Substring(0, 4) + '/' + 
                    (strDate).Substring(4, 2) + '/' + 
                    (strDate).Substring(6, 2), 'System.DateTime')";
这反过来又会产生错误:

"Cannot interpret token '.' at position 21."

这个解决方案最终对我有效。 注意,子字符串不是基于0的,因此我假设它是子字符串的SQL版本

table.Columns.Add("ChangeDate", typeof(DateTime)).Expression = 
                  "CONVERT(SUBSTRING([APO_CHDATE], 1, 4) + '/' + 
                           SUBSTRING([APO_CHDATE], 5, 2) + '/' + 
                           SUBSTRING([APO_CHDATE], 7, 2), 'System.DateTime')";