TL;DR 版本:
有没有办法枚举两个仅由一个元素(可能是附加元素或缺失元素)不同的列表,并在匹配所有其他元素的同时判断哪个元素已更改?
我的类有一个List<View>
属性,它是List<Model>
通过构造函数注入的。每个都View
将其各自包装Model
为公共属性。
在同一范围内,有一个void Update(List<Model> newList)
例程,它接收具有以下条件的另一个列表Model
:它与List<Model>
以前相同,加或减一个元素。这是因为Update
每次在其他地方的数据绑定列表中添加或删除项目时都会调用它,并且应用程序一次只能添加/删除一个元素。
操作的动机Update
,而不是简单地用新列表替换旧列表的模型(包装在视图中),是View
类存储状态,所以我想替换它们的模型,但保留它们的状态——它不存储在反正模型。
问题是:如果有新模型,我必须添加新视图,当相应模型不存在时,我必须删除相应视图,并且我必须将现有视图与其现有模型匹配,除了添加的元素或删除。我不确定该怎么做。
所以我正在考虑将列表第一个元素中的模型与新列表的第一个元素进行比较,如果它们匹配,则转到第二个元素,依此类推。在某一时刻,它们会有所不同,但这可能是因为添加了一个元素(然后剩余的元素将移动一个索引),或者由于删除了一个元素(在这种情况下,剩余的元素将向下移动,并且不同的元素实际上是列表中已经存在的元素)。
有什么明智的方法来判断第一个不同的元素是由于添加还是删除?