0

这不是一个大问题,但它困扰着我。我知道如何选择强类型集合(List(Of T),但对于不是 List 的对象,我找不到这样做的整洁方法。

这有效:

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。

有人做过吗?

4

1 回答 1

0

只需跳过类名:

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

但它会给你IEnumerable(Of T),哪里T匿名类型。你不应该从你的方法中返回这样的对象:

例如,匿名类型不能用于定义方法签名、声明另一个变量或字段,或用于任何类型声明。因此,当您必须跨方法共享信息时,匿名类型是不合适的。

编辑

要从集合中仅获取一个元素,请使用First/FirstOrDefault方法:

Dim x = (From a In response...<artist> _
        Select New With { .MBID = a.@id, .Name = a.<name>.Value }).FirstOrDefault();
于 2013-09-12T16:44:42.013 回答