2012-05-17 67 views
2

第一(工作):这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