0

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

ID 日期ID 国家 NoOfPeople

2 20130301 印度尼西亚 2

3 20130301 马来西亚 128

4 20130301 英国 2

6 20130302 澳大利亚 1

24 20130303 澳大利亚 2

25 20130303 不丹 11

26 20130303 加拿大 1

27 20130303 斐济 1

28 20130303 芬兰 1

52 20130304 澳大利亚 2

53 20130304 不丹 10

54 20130304 加拿大 1

55 20130304 斐济 1

我希望将这些数据转换为字典,其中 DateID 是键,值是国家对象列表,具有国家和 noOfPeople 的属性

IEDictionary<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。

希望这是有道理的。

提前致谢。

4

1 回答 1

0

如果你有一个IEnumerable<Row>,比如说rows,某个类Row在你的数据的每一行都有属性,那么你可以使用 Linq 查询创建所需的结构:

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

然后使用任何标准的 JSON 序列化器应该可以得到你想要的格式。阅读更多关于ILookup<TKey, TElement> 这里

于 2013-05-23T04:20:57.327 回答