尝试对字典值进行求和时出错

时间:2015-12-05 10:25:01

标签: vb.net dictionary sum

我正在尝试按照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()来检查布尔值。

1 个答案:

答案 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 = Truex.Value = True不是必需的。写xx.Value就足够了。这里添加只是为了澄清意图