我的代码如下:
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,那么将工作(带有员工和他的数据)添加到yjobs。如果在yjobs中找到job_no,并且在该作业的Employee表中找不到emp_id,则将该员工(和hed数据)添加到该作业。如果在该工作中找到该员工,则只需将HED数据添加到员工列表中。
如果我以某种方式合并xjobs和yjobs,或者我将xjobs直接加载到yjobs列表中,我没有偏好。
感谢
答案 0 :(得分:0)
您是否正在寻找一套非常简洁的LINQ语句来执行此合并操作或根本不需要任何解决方案?我要做的是遍历一组并使用LINQ将每个项目与另一组进行比较,并将比较得到的项目添加到第三组。像这样的问题你必须分解成可管理的部分,然后在较小的部分工作后重新组合成更大的解决方案。尝试一下,如果你遇到困难,那么肯定能够填补这些空白。