将函数从csharp转换为vb



我使用converter.telerik.com 转换了此代码

来自

public Decimal CartTotal()
{
return this.Items.Sum<CartItem>((Func<CartItem, Decimal>) (x => x.Total));
}

Public Function CartTotal() As Decimal
Return Me.Items.Sum(Of CartItem)(CType((Function(x) x.Total), Func(Of CartItem, Decimal)))
End Function 

但是编译器说

重载解析失败,因为没有可访问的"Sum"接受此类型参数的数目。

您只需删除"Sum"上的泛型说明符:

Public Function CartTotal() As Decimal
Return Me.Items.Sum(CType(Function(x) x.Total, Func(Of CartItem, Decimal)))
End Function

我现在不明白VB为什么会有这个问题,但这是一个常见的问题。通常,该问题会影响任何IEnumerable扩展方法的使用。

这是关于应该是什么的问题,还是关于Telerik的转换器的问题?如果是后者,那么你可能会想接受Telerik。。。

如果是前者,那么也许

Return (from item as CartItem in items Select item.Total).Sum()

.NET Fiddle

最新更新