Vb.net LINQ到XML-选择到强类型对象(VB)

Vb.net LINQ到XML-选择到强类型对象(VB),vb.net,linq-to-xml,Vb.net,Linq To Xml,这不是一个大问题,但它困扰着我。我知道如何选择一个强类型的ListT集合,但是对于一个不是列表的对象,我找不到一种简洁的方法来进行选择 这项工作: Dim x = From a In response...<artist> _ Select New MBArtistInfo With {.MBID = a.@id, .Name = a.<name>.Value, .Gender = a.<gender>.Value} Return x(0) 但不得不这样做是

这不是一个大问题,但它困扰着我。我知道如何选择一个强类型的ListT集合,但是对于一个不是列表的对象,我找不到一种简洁的方法来进行选择

这项工作:

Dim x = From a In response...<artist> _
Select New MBArtistInfo With {.MBID = a.@id, .Name = a.<name>.Value, .Gender = a.<gender>.Value}
Return x(0)
但不得不这样做是令人恼火的

我在其他地方看到了C解决方案,大致如下:

var x = from a In response...<artist>
select new MBArtistInfo
{
MBID = etc
但是我不能把它转换成VB

有人这样做过吗?

跳过类名:

Dim x = From a In response...<artist> _
        Select New With { .MBID = a.@id, .Name = a.<name>.Value, .Gender = a.<gender>.Value }

是的,我知道这一点,但我必须有一个强类型的对象才能从数据访问层返回,我不想从匿名类型转换——如果在C中可以,那么在VBA中也可以,匿名类型在C中的工作方式与此相同。你应该展示你试图在vb中重现的更精确的c代码示例。正如我说的,我对匿名类型不感兴趣——我需要一个强类型的对象。我感兴趣的C代码在这里-。但我无法将其转换为VB。您对使用{.Property=Value}选择新类名也做了同样的操作。是的,但我得到的是一个MBArtistInfo列表-在我看来,应该可以返回单个对象,而不必引用集合的第一个对象。但如果这是唯一的办法,那就这样吧。
Dim x = (From a In response...<artist> _
        Select New With { .MBID = a.@id, .Name = a.<name>.Value }).FirstOrDefault();