将函数从 csharp 转换为 vb

Converting a function to vb from csharp

我使用 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 

但是编译器说

Overload resolution failed because no accessible 'Sum' accepts this number of type arguments.

这是关于应该的问题,还是关于 Telerik 转换器的问题?如果是后者,那么您可能想与 Telerik 一起处理...

如果是前者,那么可能

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

.NET Fiddle

您只需将通用说明符放在 'Sum':

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

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