字典上的c# Linq Sum查询

本文关键字:Sum 查询 Linq 字典 | 更新日期: 2023-09-27 17:53:41

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

<>之前类别|计数-------------------A | 2B | 2Z | 2A_b | 1[au:] [au:之前

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

<>之前类别|计数-------------------A | 8 <- (A, A_B, A_B_C的和)B | 2Z | 2A_B | 6 <- (A_B, A_B_C的和)[au:] [au:

字典上的c# Linq Sum查询

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);
Dictionary<string, int> data = new Dictionary<string,int>();
data.Add("A", 2);
data.Add("B", 2);
data.Add("Z", 2);
data.Add("A_B", 1);
data.Add("A_B_C", 5);
data.Dump();
    var result = from d in data
                 select new {Key = d.Key, Sum = (from dt in data where dt.Key.StartsWith(d.Key) select dt).Sum(x=>x.Value)};
result.Dump();

Linqpad代码