基本上,您使用第二个列表中的所有 id 创建一个列表,并检查 doc1 的每个项目是否在列表中。性能方面,我认为这不是最佳选择 - 但它应该有效
var qry = from item in doc1.Descendants("Item")
where
!(from item2 in doc2.Descendants("Item")
select item2.Attribute("id"),Value
).ToList().Contains(item.Attribute("id").Value)
select item;
在上面的 linq 语句中,我认为 id 列表是为 doc1 中的每个元素创建的。更好的选择是先创建列表,然后在下一条语句中使用该列表:
List<string> items = (from item2 in doc2.Descendants("Item")
select item2.Attribute("id").Value
).ToList();
var qry = from item in doc1.Descendants("Item")
where !items.Contains(item.Attribute("id").Value)
select item;