C#中的嵌套Linq

gab6jxml  于 2022-12-30  发布在  C#
关注(0)|答案(2)|浏览(179)

我想使用linq作为树结构提取一个列表。

{
    "details": [
        {
            "description":"This is description 1",
            "Name": "Name 1"
        },
        {
            "description":"This is description 2",
            "Name": "Name 2"
        }
    ],
    "price": 100
}

我手头有一个detailsDto作为List〈〉,我将在Details字段中使用它
来自'm'示例属性将在detailsDto中绑定。这就是我面临如何执行此操作的问题。描述和名称字段在'm'示例中可用

var data = await Task.FromResult((
    from c in _context.C
    join mc in _context.MC on c.VId equals mc.VId
    join m in _context.M on mc.Id equals m.mcId
    where mc.Id == mcId && c.Id == CId
    select new MainDto()
    {
        Price = mc.Price,
        // Details =
    }
    ).FirstOrDefault()
);
k4aesqcs

k4aesqcs1#

您可能需要这个查询:

var data = await (
    from c in _context.C
    join mc in _context.MC on c.VId equals mc.VId
    where mc.Id == mcId && c.Id == CId
    select new MainDto()
    {
        Price = mc.Price,
        Details = _context.M.Select(m => new DetailsDto 
        {
            Name = m.Name,
            description = m.Description,
        }).ToList()
    }
    ).FirstOrDefaultAsync();
nx7onnlm

nx7onnlm2#

这应该是有帮助的

{
    Price = mc.Price,
    Details = m.Select(x => new DetailDto
    {
        Description = x.Description,
        Name = x.Name
    }).ToList()
}

它将为m列表中的每个元素创建DetailDto类的新示例,并将DescriptionName属性的值赋给DetailDto示例中的相应属性。

相关问题