将数据转换为int和list的字典

时间:2013-05-23 03:53:13

标签: json linq dictionary

我的数据库中的数据存储为

ID DateID国家NoOfPeople

2 20130301印度尼西亚2

3 20130301马来西亚128

4 20130301英国2

6 20130302澳大利亚1

24 20130303澳大利亚2

25 20130303不丹11

26 20130303加拿大1

27 20130303 Fiji 1

28 20130303芬兰1

52 20130304澳大利亚2

53 20130304不丹10

54 20130304加拿大1

55 20130304 Fiji 1

我希望将此数据转换为字典,其中DateID是键,值是国家/地区属性列表和noOfPeople

即。 Dictionary<int, List<Country>>

我使用LINQ将数据返回到我的应用程序,然后遍历结果,创建每个唯一日期ID的国家/地区列表。这有效,但我正在寻找一种更优雅,更有效的解决方案。

我的最终目标是以

格式输出JSON
PeopleByCountry":{

"20130301":

[

{"country":"Indonesia"," noOfPeople ":2},
{"country":"Malaysia"," noOfPeople ":128},
{"country":"United Kingdom"," noOfPeople ":2}
],

"20130302":
[
{"country":"Indonesia","noOfPeople":1},
{"country":"Australia"," noOfPeople ":1}
]
}

我正在使用NewtonSoft。

希望这是有道理的。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您有一个IEnumerable<Row>,比如rows,对于某些类Row,其中包含您数据的每一行的属性,那么您可以使用Linq查询创建所需的结构:

rows.ToLookup(r => r.DateID).ToDictionary(g => g.Key, g => g.ToList());

然后使用任何标准的JSON序列化器都可以获得所需的格式。详细了解ILookup<TKey, TElement> here