从csharp将函数转换为vb

时间:2018-10-26 10:24:15

标签: c# vb.net code-conversion

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

但是编译器说

  

过载解析失败,因为没有可访问的“和”接受此   类型参数的数量。

2 个答案:

答案 0 :(得分:0)

这是关于应该是什么的问题,还是有关Telerik转换器的问题?如果是后者,那么您可能希望与Telerik接洽...

如果是前者,那么也许

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

.NET Fiddle

答案 1 :(得分:0)

您只需要将通用说明符放在'Sum'上即可

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

确切地解释了为什么VB对此有问题,但是现在这是一个普遍的问题。通常,此问题会影响任何IEnumerable扩展方法的使用。