如果已经退出,则更新列表中的数据

时间:2017-02-27 18:19:09

标签: c# linq

我有两个列表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
  }
}

2 个答案:

答案 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作为键,然后获取值并按照以下示例更改它)

见 -

How to update value of a key in dictionary in c#?

How to update database using dictionary with linq