我有两个列表,如下所示:
List<EmpData> colExistingEmpData;
List<EmpData> colExternalEmpData;
每个员工都会有相同的Id,这些员工记录将被存储。
对于colExternalEmpData中的每个员工,会对colExistingEmpData进行EmpId检查。
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中存在重复的记录时,例如两个员工的“Id”都是123,则上述代码仍将标记具有123 ID的现有员工为更新,因为它在colExistingEmpData中找到了一个完全匹配项(只要colExistingEmpData中有一个与该Id相同的记录)。
是否有一种方法可以标记在任一来源中重复的员工记录为“IGNORE”?
我不能使用Dictionary对象,之前我曾经用过,但是领导不喜欢这个想法。
祝好。
FindAll
返回一个列表,而不是整数,对吧? - YavgenyP