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

Может ли любое из этих полей быть нулевым? – Andrei

ответ

1

Там нет прямого способа определить, какие поля делает эту проблему.

Чтобы ответить на ваш второй вопрос, как узнать правильные типы полей:

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

Таким образом, вы можете использовать DataTable.Columns коллекцию, чтобы определить тип каждого столбца (f.e с помощью отладчика.). На этом пути вы также узнаете неправильные типы.

+0

Большое спасибо, и сэкономлю свое время :) –

Смежные вопросы