按字典键(C#)的字典组列表

AGu*_*ald 1 c# linq dictionary group-by

我有一个类型的词典列表<String, String>.词典有关键收入和月份.

典型的条目可能是:Revenue ="10.080",Month ="1/2011"

我想获得每个月的收入总额,所以我试过:

List<decimal> monthsTotals = data.Select(d => Convert.ToDecimal(d["Revenue"]))
    .GroupBy(d => d["Month"]).ToList<decimal>();
Run Code Online (Sandbox Code Playgroud)

这不起作用.表达式d["Month"])加下划线.

无法将[]索引应用于"decimal"类型的表达式.

Jon*_*eet 6

你的结果Select刚刚的收入.你正在丢失所有其他信息.我怀疑你想要:

Dictionary<string, decimal> revenueByMonth =
    data.GroupBy(d => d["Month"], d => decimal.Parse(d["Revenue"]))
        .ToDictionary(group => group.Key, group => group.Sum());
Run Code Online (Sandbox Code Playgroud)

第一步创建IGrouping<string, decimal>- 即每个月,一系列收入值.

第二步是将Dictionary<string, decimal>组密钥(月份)作为字典密钥,并将组值的总和作为字典值,将其转换为a .