关于IDictionary的C#Linq Sum查询

kmo*_*o01 2 c# linq

我有IDictionary<string,int>一个不同的类别和相应的计数列表,数据看起来像这样:

Category  |  Count
-------------------
A         |    2
B         |    2
Z         |    2
A_B       |    1
A_B_C     |    5

我正在寻找一个查询,它总结以普通字母/字符串开头的类别数,所以从上面我要找的结果如下:

Category  |  Count
-------------------
A         |    8     <- (a sum of A, A_B, A_B_C)
B         |    2
Z         |    2
A_B       |    6     <- (a sum of A_B, A_B_C)
A_B_C     |    5

max*_*max 6

var d = new Dictionary<string, int>()
{
    { "A", 2 },
    { "B", 2 },
    { "Z", 2 },
    { "A_B", 1 },
    { "A_B_C", 5 },
};

var d2 = d.Select(kvp => new KeyValuePair<string, int>(
                kvp.Key,
                d.Where(k => k.Key.StartsWith(kvp.Key))
                 .Sum(k => k.Value)))
          .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)