2013-09-04 5 views
0

Я получаю следующее сообщение об ошибке:Invalid Cast Исключение Происходило

Invalid Cast Исключение Происходило Невозможно привести объект типа 'System.Data.Linq.DataQuery`1 [WindowsApplication1.DesignSpec] к типу «WindowsApplication1 .DesignSpec»

на следующем коде теста:

Dim prodSku As String = "11037" 
Dim designSpec As DesignSpec = From row In dbLocal.DesignSpecs Where row.Name = prodSku Select row 

Я искал высоко и низко, и попробовал множество вариантов, но, очевидно, не правильный выбор. Любая помощь в том, чтобы помочь мне использовать правильный синтаксис, будет очень признательна.

С уважением, благодарю вас за помощь!

PS: Я знаю, что это звучит неряшливо, но это мой первый пост (надеюсь, я разместил его адекватно). Я следил за многими темами, которые были невероятно полезны, но я не могу дать ни одного голоса, потому что у меня нет очков репутации - действительно! Если это достаточно хороший вопрос, возможно, все будут голосовать за него, чтобы дать мне достаточно очков репутации, чтобы я мог вернуть пользу каждой помощи. Еще раз спасибо!

ответ

2

Запрос Linq возвращает коллекцию (из DesignSpec), тогда как вы пытаетесь присвоить ее одному экземпляру.

Вам необходимо применить фильтр к коллекции, которая извлекает один экземпляр - например. Single(), SingleOrDefault(), First(), FirstOrDefault() и т. Д. В зависимости от того, что имеет наибольшее значение на основе ожидаемого результата запроса.

Следует помнить, что при использовании вариантов Single возникает исключение, если в результате запроса возвращается более одного экземпляра, тогда как варианты First справятся с этим нормально, поскольку они просто возвращают найденный первый экземпляр.

+0

СПАСИБО ВАС !! для вашего быстрого ответа! Это работало отлично: Dim prodSku As String = "11037" Dim designSpec Как DesignSpec = (Из строки В dbLocal.DesignSpecs Где row.Name = prodSku Выбор строки) .SingleOrDefault Я не могу голосовать ответ вверх, но спасибо вы так много! – HumbleBeginnings

1

Вы еще не выполнили запрос. Что вы сделали, описано, как выполнить запрос.

Чтобы фактически выполнить использование запроса:

  • FirstOrDefault() вернуть первый элемент согласования или нулевой
  • SingleOrDefault() вернуть соответствующий элемент или нуль (это будет проверять, что есть только один соответствующий элемент). Если есть более одного соответствия элементов исключение будет выброшено
  • First() возвратить первый соответствующий элемент или выбросить исключение, если ничего не найдено
  • Single() вернуть соответствующий элемент или выбросить исключение, если не найдены или более один найден.
+0

Вы правы ... Спасибо! – HumbleBeginnings

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