【发布时间】:2011-04-27 07:22:16
【问题描述】:
我有一个 IDictionary<string,int> 包含一个不同的类别列表和相应的计数,数据看起来像这样:
我正在寻找一个查询以普通字母/字符串开头的类别计数相加,因此从上面我要查找的结果如下:
类别 |数数 ------------------ 一个 | 8【问题讨论】:
我有一个 IDictionary<string,int> 包含一个不同的类别列表和相应的计数,数据看起来像这样:
我正在寻找一个查询以普通字母/字符串开头的类别计数相加,因此从上面我要查找的结果如下:
类别 |数数 ------------------ 一个 | 8【问题讨论】:
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, KeyValuePair<string, int>>。
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 代码
【讨论】: