2012-05-17 2 views
2

Первый (который работает):Каковы различия между этими двумя заявлениями LINQ?

IEnumerable<PacchettoOfferta> PacchettiTemp = from PacchettoOfferta a in SottoPagina.PacchettiOfferte 
               select a; 
Pacchetti = Pacchetti.Union(PacchettiTemp); 

Второй (который не работает, Unable to cast object of type):

Pacchetti = Pacchetti.Union((IEnumerable<PacchettoOfferta>)SottoPagina.PacchettiOfferte); 

Почему? Я бы хотел использовать второе утверждение ... В чем отличия? И что мне нужно сделать, чтобы исправить это?

+1

Что такое тип "SottoPagina.PacchettiOfferte"? – eyossi

+0

@eyossi: Я подозреваю 'IEnumerable'. Ненулезный, следовательно, потребность в спецификаторе типа :) – leppie

+0

Я думаю, что ответ ниже решит вашу проблему, но если нет, укажите его тип, и он будет легко решить его. – eyossi

ответ

4

Если SottoPagina.PacchettiOfferte не является IEnumerable<PacchettoOfferta>, вы не можете использовать его для этого типа.

Попробуйте использовать Enumerable.Cast Extension Method:

Pacchetti = Pacchetti.Union(SottoPagina.PacchettiOfferte.Cast<PacchettoOfferta>()); 
+0

, чтобы он включал все элементы в 'SottoPagina. PacchettiOfferte' в 'IEnumerable '? – markzzz

+2

@markzzz: Нет, он переводит каждый элемент в 'SottoPagina.PacchettiOfferte' в' PacchettoOfferta', поэтому результатом является 'IEnumerable '. Это, конечно же, работает только в том случае, если предметы в 'SottoPagina.PacchettiOfferte' * могут быть отнесены к' PacchettoOfferta'. – dtb

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