对象列表,如果发现则更新,否则添加

本文关键字:更新 添加 发现 列表 如果 对象 | 更新日期: 2023-09-27 17:58:03

我有下面的代码可以工作:

List<XXTJobTableModel> xjobs = filexxts.GroupBy(x=> x.job)
            .Select(fx => new JobTableModel
            {
                job_no = fx.First().job,
                emps = fx.GroupBy(x=>x.emp_id).Select(x => new EmployeeTableModel
                {
                    eid = x.First().emp_id,
                    heds = x.GroupBy(h => h.HED).Select(h => new HEDModel
                    {
                        hed = h.First().HED,
                        hours = h.Sum(c => c.HOURS),
                        amt = h.Sum(c => c.AMOUNTRATE)
                    }).ToList()
                }).ToList()
            }).ToList();
public class JobTableModel
{
    public string job_no { get; set; }
    public List<EmployeeTableModel> emps { get; set; }
}
public class EmployeeTableModel
    {
        public string emp_id { get; set; }
        public List<HEDModel> heds { get; set; }
    }
public class THEDModel
    {
        public string hed { get; set; }
        public decimal hours { get; set; }
        public decimal amt { get; set; }
    }

我已经从另一个数据源加载了另一个List<XXTJobTableModel> yjobs。我想做的是,如果在yjobs中找不到job_no,那么将该job(带有employee和he数据)添加到yjobs。如果在yjobs中找到job_no,而在该job的Employee表中找不到emp_id,则将Employee(和hed数据)添加到该jobs中。如果在该工作中找到该员工,则只需将HED数据添加到员工列表中即可。

如果我以某种方式合并xjobs和yjobs,或者如果我将xjobs直接加载到yjobs列表中,我没有偏好。

感谢

对象列表,如果发现则更新,否则添加

您是在寻找一组非常简洁的LINQ语句来执行此合并操作,还是只是寻找任何解决方案?我要做的是循环浏览一个集合,并使用LINQ将每个项目与另一个集合进行比较,并将比较后的项目添加到第三个集合。像这样的问题,你必须分解成可管理的部分,然后在较小的部分工作后将其重新组合成一个更大的解决方案。尝试一下,如果你被困在这里,肯定会有人填补空白。