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

如何获取MasterData类型结果?基于属性条件的父模型查询问询

正确实现方式分析

当前代码的问题在于使用SelectMany将所有MasterData下的sections扁平化为单一的Section集合,最终返回的是List<Section>,而非你需要的MasterData类型集合。要返回筛选后保留符合条件sections的MasterData实例,可按以下方式实现:

方式1:创建新的MasterData实例(推荐,不修改原数据)

通过投影操作,为每个MasterData实例复制原有属性,并筛选其sections集合:

var result = MasterData
    .Select(master => new MasterData
    {
        // 复制MasterData中需要保留的其他属性,示例:
        // MasterId = master.MasterId,
        // Description = master.Description,
        // 筛选符合条件的sections
        sections = master.sections.Where(x => MasterDataAttId_All.Contains(x.SectionId)).ToList()
    })
    // 可选:过滤掉筛选后sections为空的MasterData实例
    .Where(master => master.sections.Any())
    .ToList();

方式2:修改原MasterData实例(不推荐,会改变原数据)

如果允许修改原集合中的MasterData对象,可以直接更新其sections属性:

// 先转为List避免多次枚举原集合
var result = MasterData.ToList();
foreach (var master in result)
{
    master.sections = master.sections.Where(x => MasterDataAttId_All.Contains(x.SectionId)).ToList();
}

注意事项

  • 方式1不会影响原MasterData集合中的数据,适合大多数场景;
  • 方式2会直接修改原对象的sections属性,可能引发意外的副作用,需谨慎使用;
  • 若MasterData的sections是只读集合,需确保新赋值的集合类型与原属性兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:38:13