我有一份清单。填写此列表时,我有类似的事情:
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)。怎么做?感谢
答案 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));
}
}