2017-01-23 2 views
0

У меня есть следующее определение «включено» в запросе LINQ на моем C#, пытаясь объединить две таблицы данных. Проблема заключается в m, колонка InputValue - это строка, которая может содержать числовое значение или буквенно-цифровое значение. Это плохо, потому что я думаю, что Int32.Parse(string) может прерывать мой запрос. Мое предложение where будет указано таким образом, что мы будем отфильтровывать эти случаи, но не имеет значения, вызвана ли функция Int32.parse и взорвает мое выполнение.Когда LINQ создает объекты состояния «ON»?

   on 
       // m 
       new { 
        FormType = m.Field<int>("FormType"), 
        ID   = (int)Int32.Parse(m.Field<string>("InputValue")) 
       } 
       equals 
       // z 
       new { 
        FormType = z.Field<int>("FormType"), 
        ID   = z.Field<int>("ZoneID") 
       } 
       where ... /* bad Int32.Parse cases would be filtered out.. */ 
+0

Вы пробовали запустить его, чтобы посмотреть, что происходит? –

+0

var У меня есть этот вывод запроса, который просто говорит («Конкретный ролик не действителен».) –

+0

Вы пытались создать [mcve]? –

ответ

0

Вам необходимо структурировать запрос для фильтрации таблицы перед тем присоединения.

Например:

from l in left where IsValid(l) 
join r in right 
on /* Your above join condition */ 
... 
;