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

如何通过ClientId将两个列表合并到ReferralModel中?

高效关联ReferralModel与ReferralForm列表

模型定义

public class ReferralModel
{
    public string? ClientName { get; set; }
    public Guid? ClientId { get; set; }
    public string? ClientNumber { get; set; }
    public string? ClientDOB { get; set; }
    public string? DateSubmitted { get; set; } = default;
    public DateTime? ModifiedDateSubmitted { get; set; }
    public string? ReportStatus { get; set; }
    public string? ReferralNotes { get; set; }
    public ReferralForm? referralForm { get; set; }
}

public class ReferralForm
{
    public Guid FileId { get; set; }
    public Guid ClientId { get; set; }
    public string? Name { get; set; }
    public string? FileName { get; set; }
    public string? ContentType { get; set; }
    public string? FileExtension { get; set; }
    public byte[]? FileContent { get; set; }
    public DateTime CreatedDate { get; set; }
}

问题场景

现有两个列表:

var referrals = new List<ReferralModel>();
var referralForms = new List<ReferralForm>();

需要将referralForms中与ReferralModel拥有相同ClientId的项,关联到对应ReferralModel的referralForm属性。由于数据量可达数千条,普通嵌套遍历性能不足,需实现高效的即时映射方案。

解决方案

利用字典的O(1)查找特性,先将referralForms构建为以ClientId为键的查找表,再遍历referrals完成匹配,整体时间复杂度为O(n+m)(n、m分别为两个列表的长度),性能远超嵌套遍历。

代码实现

// 构建ClientId到ReferralForm的映射字典,处理多Form对应同一ClientId的情况(此处取第一个,可按需调整)
var formLookup = referralForms
    .GroupBy(form => form.ClientId)
    .ToDictionary(group => group.Key, group => group.First());

// 遍历referrals,通过字典快速匹配关联
foreach (var referral in referrals)
{
    if (referral.ClientId.HasValue && formLookup.TryGetValue(referral.ClientId.Value, out var matchedForm))
    {
        referral.referralForm = matchedForm;
    }
}

补充说明

  • 若同一ClientId对应多个ReferralForm,可根据业务需求修改匹配逻辑,比如取最新创建的表单:
    .ToDictionary(group => group.Key, group => group.OrderByDescending(f => f.CreatedDate).First());
    
  • 该方案在数千条数据的场景下几乎可以即时完成映射,完全满足性能要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:25:19