至於在字典中的新條目和新的對象內的條目的List<object>
:
List<object>[] addedLists = New.Keys.Except(Existing.Keys)
.Select(key => New[key])
.ToArray();
object[] addedObjects = Existing.Keys.Intersect(New.Keys)
.SelectMany(key => New[key].Except(Existing[key])
.ToArray();
但最後一個要求是有點不清楚。你將如何定義一個改變的對象?應該比較哪些對象進行更改?將任何對象與任何其他對象進行比較可能會被定義爲不同的,因此必須有一些相似之處來進行比較(例如,在其屬性ID
中具有相同值的對象)。
編輯:正如您在您的評論的對象的身份是如何定義的明確,這裏是如何找到的所有更改的對象(假設該詞典的價值是具有特性的Foo
列表Name
和Type
標識的對象和屬性Value
可能會改變:
var differences = Existing.Keys.Intersect(New.Keys).SelectMany(key =>
from existingObj in Existing[key]
join newObj in New[key] on new { existingObj.Name, existingObj.Type } equals
new { newObj.Name, newObj.Type }
where existingObj.Value != newObj.Value
select new { Key = key, Existing = existingObj, New = newObj });
這將產生各自含有字典中的差被發現,現有的物體和新物體的密鑰對象的序列相同的對象將不被包括在結果中。
請向我們展示您的代碼。 – Magnus