检查项目是否在列表中并删除旧项目

时间:2016-11-25 00:18:01

标签: c# logic

我有一份清单。填写此列表时,我有类似的事情:

List<T> {Soc1, Soc2, Soc3}

与Soc复杂的对象。然后我修改列表:删除Soc2,添加Soc4:

List<T> {Soc1, Soc3, Soc4}

现在,在db上,我已经获得了第一个列表(1,2,3),我必须使用新的列表(1,3,4)进行更新。怎么做这个检查c#?我尝试使用List方法包含

foreach(T t in oldList){
if(t.Contains(oldList)){
...}

用于添加新项目,但我停止删除不再存在的元素(在此示例中为Soc2)。怎么做?感谢

2 个答案:

答案 0 :(得分:1)

修改列表时,

foreach会中断(删除项目)。因此,最好使用while。 您使用旧列表中的一段时间来删除不再存在的元素,然后使用新列表添加新项目。

CompletableFuture.supplyAsync(Supplier<U>)

答案 1 :(得分:0)

你可以做两个循环并使用LINQ:

// add the new ones...
foreach (var newItem in newList.Where(n => !oldList.Any(o => o.Id == n.Id))) {
    oldList.Add(newItem);
}

// remove the redundant ones...
var oldIds = oldList.Select(i => i.Id);
foreach (var oldId in oldIds) {
    if (!newList.Any(i => i.Id == oldId)) {
        oldList.Remove(oldList.First(i => i.Id == oldId));
    }
}