是否有某种方法而不是反复尝试来指定哪个字段引起问题以及什么是正确的字段类型?
我得到以下异常:
Specified cast is not valid.
var vacStatiscs = from x in dtGivenBal.AsEnumerable()
join y in dtTakenBal.AsEnumerable()
on x["emp_num"].ToString() equals y["emp_num"].ToString()
into joined
from j in joined.DefaultIfEmpty()
select new
{
emp_num = x.Field<int>("emp_num"),
name = x.Field<string>("name"),
startBal = x.Field<int>("startBal"),
prevMon = x.Field<int>("PrevMon"),
added = x.Field<int>("Added"),
taken = (j == null) ? 0 : j.Field<Int32>("sum")
};
现在,如果我删除添加的startBal,prevMon,则不会出现异常.
注意:前面的字段是COUNT和SUM SQL查询的结果
解决方法:
没有直接的方法可以检测出哪个字段导致了问题.
要回答第二个问题,如何找出正确的字段类型:
Type fieldType = dtGivenBal.Columns["startBal"].DataType;
因此,您可以使用DataTable.Columns
集合来确定每个列的类型(例如,通过调试器).这样,您还将找出错误的类型.