StrongTypingException в Linq - PullRequest
       4

StrongTypingException в Linq

1 голос
/ 10 января 2012

Кто-нибудь может сказать, почему ToList () генерирует исключение?

var duplicates =  
    from typeMappings in _liveTable.Where(r =>
        (r.ProviderId == providerId) && (r.ExchangeId == exchangeId))
    join dataDictionary in _liveDataSet.DataDictionary.Where(r => 
        (r.DataDictionaryTypeId == dataDictionaryTypeId)) 
    on typeMappings.DataDictionaryId equals dataDictionary.DataDictionaryId
    select typeMappings.ConfigId;

if (duplicates.ToList().Count > 0) 
{ ... }

Сообщение об исключении:
'duplicates.ToList ()' вызвало исключение типа 'System.Data.StrongTypingException'System.Collections.Generic.List {System.Data.StrongTypingException}

Спасибо

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Из MSDN:

StrongTypingException

Исключение, которое выдается строго типизированным набором данных, когда пользователь обращается к значению DBNull.

Таким образом, проблема возникает из-за того, что одно из свойств, к которым вы обращаетесь в запросе, имеет значение null.Проверьте, какие свойства вашего DataTable могут иметь значение null, и проверьте его с помощью вызова IsNull, прежде чем пытаться получить значение.

0 голосов
/ 10 января 2012

Попробуйте использовать это, чтобы уничтожить нулевое значение

var duplicates =  
from typeMappings in _liveTable.Where(r =>
    (r.ProviderId == providerId) && (r.ExchangeId == exchangeId))
join dataDictionary in _liveDataSet.DataDictionary.Where(r => 
    (r.DataDictionaryTypeId == dataDictionaryTypeId)) 
on typeMappings.DataDictionaryId equals dataDictionary.DataDictionaryId
select new
       { ConfigId = typeMappings.ConfigId = null ? "anyValueyouwhant" : typeMappings.ConfigId};

juste to test без нулевого значения

...