【发布时间】:2019-08-07 11:00:04
【问题描述】:
我想从 CSV 文件和数据库这两个数据源创建、更新和删除记录。
每个项目都加载到特定模型中:
List<Employee> fromEmployees = this.loadCSVEmployees();
List<Employee> toEmployees = this.loadDBEmployees();
我使用 except 和 Intersect 来比较值:
List<Employee> empToDelete = toEmployees.Except(fromEmployees, new EmpEqualityComparer()).ToList();
List<Employee> empToCreate = fromEmployees.Except(toEmployees, new EmpEqualityComparer()).ToList();
List<Employee> empToUpdate = fromEmployees.Intersect(toEmployees, new EmployeeIntersetComparer()).ToList();
empToUpdate 包含我要更新的值(来自 fromEmployees),但记录的 ID 设置在 toEmployees 列表中。
从相交结果的两个列表中合并一些值(如标识)的最佳方法是什么?员工模型有一个 SSNO,我用它来认识相同的用户……我不能使用联合。
【问题讨论】:
-
Intersect将返回 2 个列表上的匹配记录,所以您不能直接将其切换到toEmployees.Intersect(fromEmployees, <...>)吗? -
因为 Intersect 仅匹配 SSNO 等一些属性并返回 CSV 结果...切换返回 SGBD 结果...
-
这里有什么问题?标题是一个模糊的关键词列表,并不是一个真正的问题。合并对象经常被问到。例如merging two objects in C#。但我不确定这就是你想要做的......
-
我不完全确定您要做什么,但
Zip或Join可能非常有用 -
谁说过反射?
标签: c#