是否有某种方式而不是尝试错误来指定哪个字段出现问题以及正确的字段类型是什么?
我得到以下异常:
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 ,added
,我不会出现异常。
注意:前面的字段是 COUNT
和 SUM
SQL 查询的结果
最佳答案
没有直接的方法来检测是哪个字段导致了问题。
要回答您的第二个问题,如何找出正确的字段类型:
Type fieldType = dtGivenBal.Columns["startBal"].DataType;
所以你可以使用 DataTable.Columns
集合以确定每列的类型(例如通过调试器)。这样你也会发现错误的类型。
关于c# - 指定的转换在 linq 查询中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32627704/