我有一个看起来像这样的文本字符串,它可能会更大。相同的UserID可以出现几次。
[{“UserID”:“400”,“username”:“john doe”,“GroupID”:“11”,“GroupName”:“Missing”,“Money”:“2300”}, {“UserID”:“500”,“username”:“jon doe”,“GroupID”:“12”,“GroupName”:“Missing”,“Money”:“2400”}, {“UserID”:“600”,“username”:“jen doe”,“GroupID”:“13”,“GroupName”:“Missing”,“Money”:“1100”}, {“UserID”:“400”,“username”:“john doe”,“GroupID”:“11”,“GroupName”:“Missing”,“Money”:“1400”}]
我想对此问题进行排序,以便LINQ对此问题如何。
类似于所有UserID的金额,UserID的金额和用户名的总和。
我应该把它放在课堂上,或者最好的方法是什么?
答案 0 :(得分:3)
我应该把它放在课堂上,或者最好的方法是什么?
答案 1 :(得分:1)
如果您要经常处理这些对象,那么我肯定会使用类来表示它们,以便更容易反序列化JSON字符串。如果没有那么你就可以快速而肮脏地滚动。无论哪种方式,我认为你将要使用Json.NET库;它会让你的生活更轻松。通过在包管理器控制台中运行此命令将其安装在项目中:
Install-Package Newtonsoft.Json
对于快速而肮脏的解决方案,给定一个名为json
的字符串,您可以这样做:
Newtonsoft.Json.Linq // Namespace
.JArray // Class
.Parse(json) // Static method to parse string into a JArray
.Select(x => new // Select anonymous types
{
UserId = x["UserID"],
Username = x["username"],
GroupId = x["GroupID"],
GroupName = x["GroupName"],
Money = x["Money"],
})
.GroupBy(x => x.UserId) // Group by user id.
.ContinueWithRemainingQuery();