对象列表,如果发现则更新,否则添加
本文关键字:更新 添加 发现 列表 如果 对象 | 更新日期: 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将每个项目与另一个集合进行比较,并将比较后的项目添加到第三个集合。像这样的问题,你必须分解成可管理的部分,然后在较小的部分工作后将其重新组合成一个更大的解决方案。尝试一下,如果你被困在这里,肯定会有人填补空白。