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

如何获取含关联SaleMaster ID的逾期分期及对应SaleMaster实例?

获取逾期分期对应的SaleMaster实例

实体类定义

public class SaleMaster
{
    public int Id { get; set; }
    public List<Installments> Installments { get; set; }
}

public class Installments
{
    public int Id { get; set; }
    public decimal Amount { get; set; }
    public DateTime Month { get; set; }
    public bool IsPaid { get; set; }
}

需求说明

需要获取所有逾期未付的Installments数据,同时包含关联的SaleMaster ID,并且基于已查询到的逾期分期列表获取对应的SaleMaster实例。当前已实现逾期分期查询:

List<Installments> instalment = con.DbSetInstallments
    .Where(x => x.Month < d && x.IsPaid == false)
    .ToList();

解决方案

首先,你的Installments实体缺少关联SaleMaster的外键字段,这是关联查询的基础,需要补充:

public class Installments
{
    public int Id { get; set; }
    public decimal Amount { get; set; }
    public DateTime Month { get; set; }
    public bool IsPaid { get; set; }
    // 新增关联SaleMaster的外键
    public int SaleMasterId { get; set; }
    // 可选:添加导航属性方便直接关联查询
    public SaleMaster SaleMaster { get; set; }
}

方式1:直接查询带SaleMaster ID的逾期分期

如果只需要逾期分期及其对应的SaleMaster ID,可直接在查询中投影:

var overdueInstallmentsWithSaleId = con.DbSetInstallments
    .Where(x => x.Month < d && x.IsPaid == false)
    .Select(x => new {
        Installment = x,
        SaleMasterId = x.SaleMasterId
    })
    .ToList();

方式2:基于已有的逾期分期列表获取SaleMaster实例

如果已经有了instalment列表,可提取其中的SaleMaster ID集合,再批量查询对应的SaleMaster:

// 提取所有关联的SaleMaster ID(去重避免重复查询)
var saleMasterIds = instalment.Select(x => x.SaleMasterId).Distinct().ToList();
// 批量查询对应的SaleMaster
var relatedSaleMasters = con.DbSetSaleMaster
    .Where(sm => saleMasterIds.Contains(sm.Id))
    .ToList();

方式3:一次性查询逾期分期及其关联的SaleMaster(推荐)

使用EF Core的Include方法,一次性加载逾期分期及其关联的SaleMaster,减少数据库查询次数:

var overdueInstallmentsWithSaleMaster = con.DbSetInstallments
    .Include(x => x.SaleMaster) // 加载关联的SaleMaster
    .Where(x => x.Month < d && x.IsPaid == false)
    .ToList();

// 提取所有关联的SaleMaster(去重)
var relatedSaleMasters = overdueInstallmentsWithSaleMaster
    .Select(x => x.SaleMaster)
    .Distinct()
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:31