你会如何解决这个问题?我想要归还这个系列:
Public Function GetShippingMethodsByCarrier(ByVal Carrier As ShippingCarrier) As List(of ?)
Return Carrier.ShippingMethods.Select(Function(x) New With {.ID = x.ID, .Name = String.Format("{0} {1}", Carrier.Name, x.Description)})
End Function
谢谢!
答案 0 :(得分:2)
您无法从此类函数返回匿名类型,因为它没有名称。
由于这是一个公共函数,因此应该有一个定义良好的返回类型。创建一个包含这两个属性的新类。
如果返回类型是推断的泛型参数,则可以返回它,但这不是您想要的。这对于LINQ很有用,其中匿名类型本质上从参数传递到结果类型,但对你正在做的事情没有用。
你也可以使用元组,但是你会丢失属性名称。并且它不可扩展,因为添加新属性会破坏调用者代码。所以我也不建议这样做。
答案 1 :(得分:2)
这里的问题是你试图以强类型的方式返回一个匿名类型。这在VB.Net(或C#)中是不可能的。匿名类型是匿名的,它们的名称不能在代码中明确声明。解决这个问题的两种方法是
选项#1使用/创建强名称类型,如下所示
Structure Item
Public ID as Integer
Public Name As String
Public Description As String
End Structure
选项#2将返回类型设置为Object
并以后期绑定方式访问列表
修改强>
作为CodeInChaos,可以在通用上下文中以强类型方式返回它们。但这似乎并没有帮助你解决这个特殊问题。