LINQ - 在集合中选择* TYPED *项

时间:2011-03-01 14:54:34

标签: vb.net linq

我可以使用LINQ返回集合中与集合中的项目相同的项目吗?我是一个试图避免循环的LINQ Noob。

    Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

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

当我包含CTYPE函数时,我收到“无法CAST”错误。我有点期待这个错误,但我想如果我不这样做,LINQ的用处会减少,因此假设必须有办法...

2 个答案:

答案 0 :(得分:3)

这样做:

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

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

您的方法存在的问题是,Take会返回一个可枚举的内容,即使您只需使用1。

我的回答是假设questionnaireCollection是强类型的。

答案 1 :(得分:1)

Take(1)不起作用的原因是Take(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)