2015-09-17 72 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

非常感謝你,節省我的時間:) –