c# - 如何比较两个列表并返回 4 个类别列表
问题描述
我有两个列表具有相同的属性,我想比较它们之间的数据,我需要在视图中显示三个列表
NewlyAdded
员工(完成)Deleted
员工(完成)Common
员工(完成)- 更新员工(不知道如何)
我已经列出了前 3 个列表,但我不知道如何获取更新的数据然后我可以将更改部署到,destEmps
以便任何人都可以帮助我?
public class srsEmployee
{
public int Id { get; set; }
public string Name { get; set; }
public string EmpCode { get; set; }
public Nullable<decimal> Salary { get; set; }
public Nullable<system.datetime> StartDate { get; set; }
public Nullable<system.datetime> BOD { get; set; }
public int DepartmentId { get; set; }
public bool Active { get; set; }
public virtual srsDepartment srsDepartment { get; set; }
}
public class destEmployee
{
public int Id { get; set; }
public string Name { get; set; }
public string EmpCode { get; set; }
public Nullable<decimal> Salary { get; set; }
public Nullable<system.datetime> StartDate { get; set; }
public Nullable<system.datetime> BOD { get; set; }
public int DepartmentId { get; set; }
public bool Active { get; set; }
public virtual destDepartment destDepartment { get; set; }
}
这些是我用来获取 3 个列表的查询:
var Common = destEmps.Where(n => srsEmps.Any(o => o.EmpCode == n.EmpCode)).ToList();
var Deleted = srsEmps.Where(o => !destEmps.Any(n => n.EmpCode == o.EmpCode)).ToList();
var NewlyAdded = destEmps.Where(n => !srsEmps.Any(o => o.EmpCode == n.EmpCode)).ToList();
解决方案
var Updated =
from d in destEmps
join c in srsEmployee
on c.Id equals d.Id
where d.Name != c.Name || d.EmpCode != c.EmpCode ..........
select d;
foreach(var element in destEmps)
{
var oldValue = srsEmployee.First(t => t.Id == element.Id);
element.Name = oldValue.Name;
.....
}
推荐阅读
- javascript - 当计时器达到两位数时,localStorage 中断
- node.js - 将 NestJS 部署到 Azure DevOps:错误:找不到模块“../commands”
- java - 如何将文件和正文添加到 MockMvc?
- sql - PostgreSQL在查询中检查父级的父级
- sql-server - T-SQL 多重重复检查
- python-3.x - 我不允许在其他电脑上运行 python 可执行文件
- python - Python - 创建元组矩阵
- c# - 自定义字体在 xamrain 表单中未按预期工作
- laravel - 有没有办法避免使用 Laravel Passport 将用户重定向到 Laravel 后端登录页面?
- pointers - 将引用的内部结构字段与go中的字符串类型进行比较