試試這個:
var addedNames = new HashSet<string>(
liveXml.Elements().Select(e => e.Name).Except(
defXml.Elements().Select(e => e.Name)
)
);
var addedElements = liveXml
.Elements()
.Where(e => addedNames.Contains(e.Name))
.ToList();
這種方法構造liveXml
的名單「不存在於defXml
S元素的名稱,把它們放在一組,然後使用該設置過濾liveXml
的元素。
對於移除的元件,反向操作數將傳遞給Except
順序,並過濾defXml
:
var droppedNames = new HashSet<string>(
defXml.Elements().Select(e => e.Name).Except(
liveXml.Elements().Select(e => e.Name)
)
);
var droppedElements = defXml
.Elements()
.Where(e => addedNames.Contains(e.Name))
.ToList();
對於每個元素,你需要完整的內容比較,或者是有什麼樣的ID字段你可以用? (示例XML將使這個問題更容易回答。) –
不,沒有ID字段它是兩個IIS web.config文件,我只需要找到客戶端可能添加到他們的web.config中的元素,我們不需要隨我們的產品一起發貨 – twreid