【问题标题】:List of Objects, update if found otherwise add对象列表,如果发现则更新,否则添加
【发布时间】:2016-07-21 19:27:17
【问题描述】:

我有下面的代码:

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&lt;XXTJobTableModel&gt; yjobs。我想做的是,如果在 yjobs 中找不到 job_no,则将工作(带有员工和他的数据)添加到 yjobs。如果在 yjobs 中找到 job_no,并且在 Employee 表中找不到该职位的 emp_id,则将员工(和 hed 数据)添加到该职位。如果在该工作中找到该员工,则只需将 HED 数据添加到员工列表中即可。

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

谢谢

【问题讨论】:

    标签: c# asp.net-mvc list


    【解决方案1】:

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

    【讨论】:

    • 我绝对可以循环播放,我想知道是否有更简洁或性能更好的选项。
    • 这样的事情通常有更好的性能选择,但我倾向于遵循先让某些事情发挥作用,然后找出如何以正确、更好、更快的方式去做的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多