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

EF Core:如何连接两个实体并将结果存入Item实体列表?

解决方法

你的代码现在有两个问题导致无法直接存入List<Item>:

  • Join操作后返回的是匿名类型集合(new { items = l, header = r }),不是Item类型
  • 没有执行查询并转换为列表(缺少ToList()方法)

修正后的代码如下:

List<Item> items = _dbContext.Items
    .Join(_dbContext.Header, 
          l => l.HeaderId, 
          r => r.Id, 
          (l, r) => new { Item = l, Header = r })
    .Where(p => string.IsNullOrEmpty(reportFilterDTO.HeaderDescription) || p.Header.Description.Contains(reportFilterDTO.HeaderDescription))
    // 投影回Item实体
    .Select(p => p.Item)
    // 执行查询并转换为List<Item>
    .ToList();

补充说明

如果你的需求是既要关联Header做筛选,又要获取包含Header信息的Item,那可以考虑用Include方法(前提是Item实体里有导航属性指向Header),代码会更简洁:

List<Item> items = _dbContext.Items
    .Include(i => i.Header) // 加载关联的Header
    .Where(i => string.IsNullOrEmpty(reportFilterDTO.HeaderDescription) || i.Header.Description.Contains(reportFilterDTO.HeaderDescription))
    .ToList();

注意:使用Include的前提是你的Item实体定义了public Header Header { get; set; }这样的导航属性,并且EF Core已经配置好两者的关联关系。

内容的提问来源于stack exchange,提问作者Dot NET Lover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:24:51