我正在尝试按照THIS回答中的说明对字典(String,Boolean)的所有值求和,但是我收到了错误:
重载解析失败,因为没有可访问的'Sum'接受此操作 类型参数的数量
我也尝试过.netFiddle:
Imports System.Linq
imports system.collections.generic
Public Module Module1
Public Sub Main()
Dim a as integer
Dim Dic As new dictionary(of string, boolean) _
from {{"First", 0},{"Second",0},{"Third",1}}
a = Dic.values.Sum()
End Sub
End Module
并得到同样的错误。 我错过了什么?
编辑:
我知道如果我将dictionary(of string, boolean)
更改为dictionary(of string, integer)
,代码将会有效,但我想知道是否可以使用sum()
来检查布尔值。
答案 0 :(得分:1)
Sum不是用于计算字典中有多少条目的正确方法。总和需要integer
才能采取行动。您的链接正常工作,因为字典具有整数类型的值,您有一个布尔类型。
如果您想要计算字典中有多少条目是真的,那么您应该使用Where
枚举True
值的条目,然后Count
结果
Public Sub Main()
Dim a as integer
Dim Dic As new dictionary(of string, boolean) _
from {{"First", 0},{"Second",0},{"Third",1}}
a = Dic.Values.Where(Function(x) x = True).Count()
End Sub
或
a = Dic.AsEnumerable().Count(Function(x) x.Value = True)
请注意,x = True
和x.Value = True
不是必需的。写x
或x.Value
就足够了。这里添加只是为了澄清意图