如何检测两个列表的顺序是否发生变化,如果发生变化则在 C# 中显示新添加或删除的成员
how to detect if the order of two lists changed and if changed then show newly added or deleted members in c#
我想比较两个具有属性 Id、编号、名称的列表,所以我想比较两个列表
例如
如果 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)
}
}
我想比较两个具有属性 Id、编号、名称的列表,所以我想比较两个列表 例如 如果 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)
}
}