2011-03-01 44 views
1

我可以使用LINQ返回與集合中的項目類型相同的集合中的項目嗎?我是LINQ Noob試圖避免循環。LINQ - 在集合中選擇一個* TYPED *項目

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

CType((From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).Take(1), ParentQuestionnaireItem) 

當我包含CTYPE函數時,出現「無法CAST」錯誤。我有點預料的錯誤,但我想,如果我不需經過dnot爲此,LINQ的效用會被削弱,因此認爲必須有一個辦法......

回答

1

稱取(1)不工作的原因是服(1)返回一個IEnunmerable(Of TSource)IQueryable(Of TSource)根據查詢,爲什麼首先返回類型TSource

的對象
Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 
DirectCast((From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).First, ParentQuestionnaireItem) 
+0

其他答案投票了,但你的答案提供了一些信息。 Ty – ChadD 2011-03-01 15:16:55

+0

@Velika,不客氣,也'DirectCast'比CType'好一點 – msarchet 2011-03-01 15:42:32

3

只是這樣做:

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

(From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).FirstOrDefault() 

你的方法的問題是,Take返回一個枚舉值,即使你只取1。

我的答案假設questionnaireCollection是強類型。

相關問題