我有以下查询,其中Nodes是MonProfiles中的导航属性。
var nodes = await dbContext.MonProfiles.Include(x => x.Nodes).
Where(x => x.Id == profileId).
Select(x => x.Nodes.
Select(y => new { y.NodeNativeId, y.NodeClassId, y.NodeName, y.NodeClass.ClassName })).
ToListAsync();
return Json(new { nodes });
我面临的问题是数组中数组中返回的JSON:
{
"nodes": [[{
"NodeNativeId": 1234567,
"NodeClassId": 9999,
"NodeName": "TestName",
"ClassName": "TestClassName"
}]]
}
我想要回归的是:
{
"nodes": [{
"NodeNativeId": 1234567,
"NodeClassId": 9999,
"NodeName": "TestName",
"ClassName": "TestClassName"
}]
}
这是我第一次使用LINQ来选择属于Navagation属性的各个属性,这是我第一次遇到这种类型的结果。如何更正我的LINQ查询,以便获得我期望的JSON输出?
答案 0 :(得分:5)
尝试选择多个
var nodes = await dbContext.MonProfiles.Include(x => x.Nodes).
Where(x => x.Id == profileId).
SelectMany(x => x.Nodes.
Select(y => new { y.NodeNativeId, y.NodeClassId, y.NodeName, y.NodeClass.ClassName })).
ToListAsync();
这有效地压缩了列表列表
答案 1 :(得分:0)
它也适用于
return Json(nodes);
而不是
return Json(new { nodes });
我是通过手机写的,所以我还没有对它进行过测试。