请帮助获取解决方案。
我有类似sql server的数据
Name ColumnName Value
------------------------------------------------
Login FirstName ABC
Login LastName XYX
我的要求是获取json中的数据
{
Name: "Login",
Data: [
FirstName: "ABC",
LastName: "XYZ"
]
}
我已经写过查询,但是我没有得到确切的输出
这是一个查询,看起来我很接近,请帮助我获得像上面的json一样的结果
`var data = myDbEntities.GetSectionData(Id)
.GroupBy(section=> new { section.Name })
.OrderBy(section => section.Key.Section)
.Select(section => new
{
Section = section.Key.Section,
Data = section.Select(c => new KeyValuePair<string, string>
(
c.ColumnName,
c.Value
))
}).ToDictionary(c => c.Section);
return data;`
答案 0 :(得分:1)
您可以提供更多数据,但我认为您提供的零件足以扣除您想要的东西。据我了解,您的源表具有类似(Id,Name,ColumnName和Value)的列。您希望将给定ID的数据以JSON的形式使用“ columnname”值作为json键名。您的示例json尽管无效,但接近最终输出(代码使用NuGet的Newtonsoft.Json):
var data = myDbEntities
.Where(jt => jt.Id==1)
// probably your GetSectionData(id) is doing the same thing
.GroupBy(jt => jt.Name)
.AsEnumerable()
.Select(jt => new {
Name = jt.Key,
Data = jt.ToDictionary(j => j.ColumnName, j => j.Value)
});
var json = JsonConvert.SerializeObject(data);
Console.WriteLine(json);
编辑:示例输出:
[
{
"Name": "Login",
"Data": {
"FirstName": "ABC",
"LastName": "XYZ"
}
},
{
"Name": "Login1",
"Data": {
"Prop 1": "ABCD",
"Prop 2": "ABCDE",
"Prop 3": "Alfa"
}
}
]