c#-指定的强制转换在linq查询中无效

是否有某种方法而不是反复尝试来指定哪个字段引起问题以及什么是正确的字段类型?

我得到以下异常:

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集合来确定每个列的类型(例如,通过调试器).这样,您还将找出错误的类型.

上一篇:echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小


下一篇:javascript-通过选择datepickers创建datatable标头