我有两个这样的列表:
List<EmpData> colExistingEmpData;
List<EmpData> colExternalEmpData;
他们每个人都会有具有相同 ID 的员工记录。
我知道这听起来很奇怪,但这就是我现在所处的真实情况!
对于 colExternalEmpData 中基于 EmpId 的每个员工,都会对 colExistingEmpData 进行检查
foreach (EmpData employee in colExternalEmpData)
{
var queryResult = colExistingEmpData.FindAll(thisEmployee => thisEmployee.Id == employee.Id);
if(querResult.count == 0)
{
// Mark as INSERT
}
else if(querResult.count == 1)
{
// Mark as UPDATE
}
else // queryResult is more than 1
{
// data is duplicated mark as IGNORE
}
analysedData.Add(employee);
当 colExistingEmpData 的“Id”没有重复值时,此方法可以正常工作
当 colExternalEmpData 中存在重复项时,即如果两个员工具有与 123 相同的“ID”,则上述代码仍会将 id 为 123 的现有员工标记为更新,因为它在 colExistingEmpData 中找到了完全匹配,前提是 colExistingEmpData 只有一个具有该 ID 的记录。
当员工记录在任一来源中重复时,是否有一种方法可以将其标记为“忽略”?
我不能使用 Dictionary 对象,我以前用过它,但当权者不喜欢这个想法。
Regards.
考虑仅将处理后的列表添加到等式中:
List<int> processed = new List<int>();
然后在循环的顶部添加以下代码:
if (processed.Contains(employee.Id)) { continue; }
processed.Add(employee.Id);
所以你就这么做了before你检查另一个列表。这是您要做的第一件事,因为您并不真正关心它是否已经被处理过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)