我有两个列表List<T> existingValues
&amp; List<T> newValues
newvalues
中的foreach项我检查existingValues
中是否存在(我根据主键值检查是否存在值),如果它不存在,我会将其添加到existingValues
。
现在,如果existingValues
中已存在值,我想检查是否有任何列值不同,如果它们不同,我想更新它们,我该怎么做?
foreach(var item in newvalues)
{
if(!existingValues.Any(x => x.PrimaryKeyVal == item.PrimaryKeyVal))
{
newValues.Add(item);
}
if (existingValues.Any(x => x.PrimaryKeyVal == item.PrimaryKeyVal))
{
//do something here to check if both rows are same, if not update the row with new values
}
}
答案 0 :(得分:0)
我认为您的代码是正确的,除非您必须在插入之前进行更新。
foreach(var item in newvalues)
{
var existingItem = existingValues.Where(x => x.PrimaryKeyVal == item.PrimaryKeyVal).FirstOrDefault();
if (existingItem != null && (x.Prop1 != item.Prop1 || x.Prop2 != item.Prop2 )))
{
//do something here to check if both rows are same, if not update the row with new values
existingItem .Prop1 != item.Prop1;
existingItem .Prop2 != item.Prop2;
}
else if(existingItem == null)
{
newValues.Add(item);
}
}
答案 1 :(得分:-1)
我认为使用字典会对你有帮助(使用PrimaryKeyVal作为键,然后获取值并按照以下示例更改它)
见 -