Vb.net LINQ-在集合中选择一个*类型化*项

Vb.net LINQ-在集合中选择一个*类型化*项,vb.net,linq,Vb.net,Linq,我可以使用LINQ返回集合中与集合中的项类型相同的项吗?我是一个试图避免循环的傻瓜 Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = CType((From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).Take(1), ParentQuestionnaireItem) 当我包含CTYPE函数时,会出现“

我可以使用LINQ返回集合中与集合中的项类型相同的项吗?我是一个试图避免循环的傻瓜

    Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

CType((From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).Take(1), ParentQuestionnaireItem)
当我包含CTYPE函数时,会出现“无法强制转换”错误。我有点期待这个错误,但我想如果我不能做到这一点,LINQ的有用性就会降低,因此我认为一定有一种方法…

只要做到这一点:

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

(From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).FirstOrDefault()
您的方法的问题是,
Take
返回一个可枚举值,即使只取1

我的回答假设
问题回忆
是强类型的。

只需执行以下操作:

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 

(From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).FirstOrDefault()
您的方法的问题是,
Take
返回一个可枚举值,即使只取1

我的回答假设
问题回忆
是强类型的。

Take(1)不起作用的原因是Take(1)返回
IENERABLE(属于TSource)
IQueryable(属于TSource)
根据查询,为什么首先返回
TSource

Dim mostRecentlyCreatedQuestionnaire As ParentQuestionnaireItem = 
DirectCast((From P In questionnaireCollection Order By P.Metadata.CreateDate Descending).First, ParentQuestionnaireItem)
Take(1)不起作用的原因是Take(1)返回一个
IEneUnrable(属于TSource)
IQueryable(属于TSource)
根据查询,为什么首先返回类型为
TSource

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

另一个答案投了赞成票,但你的答案提供了更多的信息。Ty@Velika,不客气,另外,
DirectCast
CType
其他被投票通过的答案要好一点,但您的答案提供了更多的信息。Ty@Velika,不客气,而且
DirectCast
CType