我有一个sql结果如下:
SehirID uniKodu
34 014
34 014
34 014
34 014
41 176
999 176
46 070
38 070
我需要一本字典
Dictionary<uniKodu, Dictionary<SehirID, sumofSehirIDs>>
指的是
unikodu sehirId count
014 34 4
070 46 1
070 38 1
176 999 1
176 41 1
我怎么能用linq做到这一点?有什么建议吗?
答案 0 :(得分:1)
您想要的结果无效,因为字典的密钥必须是唯一的。 70
和176
不是唯一的。但您可以使用由ToLookup
创建的类似集合:
var uniKoduLookup = db.Table.ToLookup(x => x.uniKodu);
如果您现在想知道sehirID
的{{1}}及其数量,请执行以下操作:
uniKodu=14
答案 1 :(得分:0)
这样的事情:
//From the Database (assuming something like this)
var result = Enumerable.Range(1, 1).Select(i => new { SehirId = 1, uniKodu =1 });
var dict = result
.GroupBy(r => r.uniKodu)
.ToDictionary(g => g.Key, g => g.ToDictionary(r => r.SehirId, g.Sum(r => r.SehirId)));
答案 2 :(得分:0)
像
这样的东西var dict = result
.GroupBy(o => new {o.SehirID, o.uniKodu})
.ToDictionary(
g => g.Key.uniKodu,
g => g.ToDictionary(
r => r.SehirId,
r => g.Count(r.SehirId)
)
);