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

时间:2016-07-21 19:27:18

标签: c# asp.net-mvc list

我的代码如下:

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列表中,我没有偏好。

感谢

1 个答案:

答案 0 :(得分:0)

您是否正在寻找一套非常简洁的LINQ语句来执行此合并操作或根本不需要任何解决方案?我要做的是遍历一组并使用LINQ将每个项目与另一组进行比较,并将比较得到的项目添加到第三组。像这样的问题你必须分解成可管理的部分,然后在较小的部分工作后重新组合成更大的解决方案。尝试一下,如果你遇到困难,那么肯定能够填补这些空白。