【问题标题】:Specified cast is not valid in linq query指定的强制转换在 linq 查询中无效
【发布时间】:2015-09-17 10:06:07
【问题描述】:

有什么方法可以指定哪个字段出现问题以及正确的字段类型是什么?

我得到以下异常:

指定的转换无效。

 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 ,added,我不会收到任何异常。

注意:前面的字段是COUNTSUM SQL 查询的结果

【问题讨论】:

  • 这些字段是否可以为空?

标签: c# asp.net linq casting datatable


【解决方案1】:

没有直接的方法可以检测出问题所在的字段。

回答你的第二个问题如何找出正确的字段类型:

Type fieldType = dtGivenBal.Columns["startBal"].DataType;

因此您可以使用DataTable.Columns 集合来确定每列的类型(例如,通过调试器)。这样你也会发现错误的类型。

【讨论】:

  • 非常感谢你,你节省了我的时间:)
猜你喜欢
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多