繁体   English   中英

如何检测两个列表的顺序是否更改,如果更改则在 c# 中显示新添加或删除的成员

[英]how to detect if the order of two lists changed and if changed then show newly added or deleted members in c#

我想比较两个具有属性 Id,Number,Name 的列表,所以我想比较两个列表,例如如果 NewList 有

Id Name   Number
1  Test    1
2  Test2   2

和 Oldlist 有

Id  NewList Number
1    Test    1

所以当我们比较两个列表时,我应该显示在 NewList Test2 中添加的文本,或者如果我从新列表中删除,那么应该显示在换行符上删除元素的文本

这是我尝试过的代码

StringBuilder oldPref = new StringBuilder();
StringBuilder newPref = new StringBuilder();
newList = GetPref(NewInfo).OrderBy(p => p.Number).Where(x => x.Number> 0).ToList();
OldList = GetPref(OldInfo).OrderBy(p => p.Number).Where(x => x.Number> 0).ToList();
   
foreach (var item in OldList)
{
  oldPref .Append(item.Name + Environment.NewLine);
}
foreach (var item in newList)
{
  newPref .Append(item.Name + Environment.NewLine);
}

if (!String.Equals(oldPref , newPref ))
{
  note.Append("Order Changed " + Environment.NewLine);
}
note.Append("From " + Environment.NewLine);
note.Append(oldPref);
note.Append("To " + Environment.NewLine);
note.Append(newPref);

任何人都可以帮我解决这个问题我如何正确地提前谢谢

最简单的方法是遍历两个列表,一次一个,看看另一个列表是否包含正在迭代的列表的每个元素:

    List<MyClass> oldList = ...;
    List<MyClass> newList = ...;
    
    foreach(MyClass item in oldList){
        if(newList.Contains(item) == false) {
            (insert logic for when item has been removed from oldList)
        }
    }
    
    foreach(MyClass item in newList){
        if(oldList.Contains(item) == false) {
            (insert logic for when item has been added to oldList)
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM