【发布时间】:2016-12-24 03:02:01
【问题描述】:
我有两个List<CustomObject>,分别叫list1和list2
public class CustomObject
{
public string foo { get; set; }
public string bar{ get; set; }
}
目标是生成一个新列表,其中包含已在 list2 中修改/添加的所有条目。
因为这些列表可能会变得很长,所以循环遍历它们不是一种选择...
有什么想法吗?
【问题讨论】:
-
您只需要比较对象实例,还是需要对所有属性进行深度比较?
-
我几乎只需要比较每个列表条目的 foo 的值。我想那算作深度比较?
-
list1 是您的原始列表,而 list2 是修改后的当前列表吗?如果您真的要跟踪一个列表中随着时间的推移发生了什么变化,那是一个非常不同的问题(而且答案比比较两个列表更简单)。
-
是的,list2 是 list1 的修改版本,我想知道发生了什么变化。以我目前对英语的理解,我称之为比较两个列表,但如果有更简单的解决方案,我会很高兴听到它:)
-
另一种选择是根本没有两个列表,而是使用 INotifyPropertyChanged 和 ObservableCollection 之类的更改跟踪策略来记录添加或修改了哪些对象,然后稍后使用该修改列表。这基本上就是 Entity Framework 识别需要向下传播到数据库的更新的方式。