2015-09-17 30 views
2

是否有一些方法而不是尝试和错误来指定哪个字段导致问题以及什么是正确的字段类型?指定的转换在linq查询中无效

我得到以下异常:

指定的转换无效。

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查询

+0

这些字段中的任何一个都可以为null? – Andrei

回答

1

有没有直接的方法来检测该场使问题。

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

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

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

+0

非常感谢你,节省我的时间:) –