LINQ to JSON - 选择单个属性属于导航属性

blg*_*boy 1 c# linq asp.net-mvc json

我有以下查询,其中节点是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 });
Run Code Online (Sandbox Code Playgroud)

我面临的问题是在数组中的数组中返回的JSON:

{
    "nodes": [[{
        "NodeNativeId": 1234567,
        "NodeClassId": 9999,
        "NodeName": "TestName",
        "ClassName": "TestClassName"
    }]]
}
Run Code Online (Sandbox Code Playgroud)

我想回来的是:

{
    "nodes": [{
        "NodeNativeId": 1234567,
        "NodeClassId": 9999,
        "NodeName": "TestName",
        "ClassName": "TestClassName"
    }]
}
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用LINQ来选择属于Navagation属性的各个属性,这是我第一次遇到这种类型的结果.如何更正我的LINQ查询,以便获得我期望的JSON输出?

Dom*_*Dom 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();
Run Code Online (Sandbox Code Playgroud)

这有效地压缩了列表的列表