[英]How to combine two lists into one Model by an Id Key field?
我有一个看起来像这样的模型
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; }
}
我有两个单独的列表,它们都具有相同的 ClientId。
var referrals = new List<ReferralModel>();
var referralForms = new List<ReferralForm>();
我想将推荐表格列表添加到其相应的 ReferralList 中,以便每个推荐列表都有正确的推荐表格(ReferralForm?referralForms)。
referrals.referralForm = referralForms.Where(x => x.ClientId == referrals.ClientId);
我考虑过遍历每个推荐列表,但列表可能有数千个,这似乎会花费太多时间。 这几乎是即时映射
我将在这里提供一种通用方法——使用扩展方法LeftOuterJoin
(关于Enumerable.Join<TOuter,TInner,TKey,TResult>
,但作为LEFT OUTER JOIN
行为)
它看起来像这样:
var models = GetModels().LeftOuterJoin(GetForms(),
(outter) => outter.ClientId,
(inner) => inner.ClientId,
(outter, inner) => {
outter.referralForm = inner;
return outter
});
将 Enumerable.Join 替换为扩展LeftOuterJoin
用法——如流行的 SO Answer https://stackoverflow.com/a/39020068/1366179中所引用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.