指定的强制转换是无效的异常

时间:2014-10-07 10:38:29

标签: c# casting datatable

这是我的代码

var result = (from row1 in table.AsEnumerable()
                          join row2 in tabelPopup.AsEnumerable()
                          on row1.Field<string>("CallID") equals
                          row2.Field<string>("callID")
                          where row1.Field<string>("Direction") == "I"
                          select new
                          {
                              Agent = row1.Field<string>("Agent"),
                              StartTime = row1.Field<DateTime>("StartTime"),
                              Reason = row2.Field<string>("Reason")
                          });

其中tabletablePopup是数据表变量。

我遇到了这个例外:

Specified cast is not valid

关于此代码:

 new
                          {
                              Agent = row1.Field<string>("Agent"),
                              StartTime = row1.Field<DateTime>("StartTime"),
                              Reason = row2.Field<string>("Reason")
                          }

2 个答案:

答案 0 :(得分:2)

确保您的列定义与您在row1.field&lt;&gt;中使用的类型相匹配。即代理是字符串,StartTime是datetime,Reason是字符串。这可能是由于StartTime不是日期时间类型。

答案 1 :(得分:1)

可能StartTime不属于DateTime类型。因此,您会收到此异常。尝试转换它。如果这是正确的,您应该将其转换为DateTime或只检索字符串值。