You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LINQ查询应在何处添加分组,以合并同分类ID下的item到同一列表

LINQ查询分组修改方案

修改位置

你需要在_sqlDbContext.RequestTemplateItems.Where(...)筛选逻辑之后,原本的Select映射逻辑之前添加按分类ID分组的逻辑。

修改后完整代码

var query = _sqlDbContext.RequestTemplates
.Select(rt => new TemplateViewModel
{
    templateName = rt.TemplateName,
    requests = _sqlDbContext.RequestTemplateItems
        .Where(ti => ti.RequestTemplateID == rt.RequestTemplateID)
        // 新增分组逻辑:按分类ID+分类名称分组,同个分类的所有条目归为一组
        .GroupBy(ti => new {ti.RequestCategoryID, ti.RequestCategory.RequestCategoryName})
        .Select(g => new RequestViewModel 
        {
            category = new CategoryViewModel 
            {
                categoryId = g.Key.RequestCategoryID,
                categoryName = g.Key.RequestCategoryName 
            },
            // 直接将分组内所有条目映射为ItemViewModel集合
            items = g.Select(ti => new ItemViewModel 
            {
                itemName = ti.ItemName,
                dueDate = ti.DueDate,
                notes = ti.Notes 
            }).ToList()
        })
        .ToList()
});

逻辑说明

  • 原逻辑中每条RequestTemplateItem记录都会生成一条独立的RequestViewModel,因此同分类下的多个条目会产生多条重复分类的请求记录
  • 新增分组后,同一RequestCategoryID下的所有条目会被归为同一个分组,单个分组映射为一条RequestViewModel,分组内所有条目直接转换为items列表的元素,即可实现同分类下条目合并的需求。
  • 分组key同时包含分类ID和分类名称,是为了兼容EF Core的SQL翻译规则,避免运行时查询报错。

内容的提问来源于stack exchange,提问作者xyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:30:02