я пытаюсь сравнить два xelements(), как показано ниже:Linq - XElement Сравнить
XElement parentItems =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-01-06T18:08:36" CP1="-6185, Intro" CP2="-6182, Article Body" CP3="-14507, Article Body1" CP4="-14430, Article Body2" CP5="-14530, Article Body3" CP6="-7064, Article Body4" CP7="-14529, Article Body5" CP8="-7065, Article Body6" CPCount="8" />
<tcm:Item Title="080_Page" Modified="2015-04-23T13:27:59" CP1="-6302, Intro" CP2="-6193, Article Body" CPCount="2" />
<tcm:Item Title="Release Notes" Modified="2016-01-07T21:25:43" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
XElement childItems =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-06-06T19:36:35" CP1="-6185, Intro" CP2="-6147, Media & Delivery Intro" CP3="-6182, Article Body" CP4="-14507, Article Body1" CP5="-14430, Article Body2" CP6="-14530, Article Body3" CP7="-7064, Article Body4" CP8="-14529, Article Body5" CP9="-7065, Article Body6" CPCount="9" />
<tcm:Item Title="080_Page" Modified="2016-02-09T21:03:32" CP1="-6302, Intro" CP2="-6193, Article Body" CPCount="2" />
<tcm:Item Title="Release Notes" Modified="2016-02-09T21:03:33" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
<tcm:Item Title="Release Notes1" Modified="2016-03-09T22:00:13" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
Я хочу, чтобы мой результат будет (первый - другой CPCount, второй - новый элемент в childItems):
XElement d тогда и только тогда =
<tcm:ListItems xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Item Title="070_Page" Modified="2016-06-06T19:36:35" CP1="-6185, Intro" CP2="-6147, Media & Delivery Intro" CP3="-6182, Article Body" CP4="-14507, Article Body1" CP5="-14430, Article Body2" CP6="-14530, Article Body3" CP7="-7064, Article Body4" CP8="-14529, Article Body5" CP9="-7065, Article Body6" CPCount="9" />
<tcm:Item Title="Release Notes1" Modified="2016-03-09T22:00:13" CP1="-6303, Release Notes Intro" CP2="-6196, Release Notes Article Body" CPCount="2" />
</tcm:ListItems>
Я попытался XMLDiff API, но не повезло. Я могу просмотреть и получить результаты, но иногда список может быть огромным (3000+). Есть ли лучший способ справиться с этим?
Итак, вы хотите использовать атрибут Title в качестве ключа и других атрибутов - просто сравните, если они есть, и покажите в полученном списке, если не совпадают или отсутствуют атрибуты? Вы должны иметь возможность использовать словарь> ', где первым ключом является заголовок элемента, а второй ключ - имя свойства, которое нужно сравнить. Постройте два из них, для левой и правой, затем сравните. –
Neolisk
Спасибо, неолиск ... Да, название будет основным фильтром .. Другие атрибуты могут быть разными .. но мои результаты должны быть основаны на: 1) CPCount 2) если в дочернем элементе есть новый элемент, t существует в родительском - это правильный словарь? будет ли плохая производительность ... Есть ли у linq что-то вроде deepequals? https://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals(v=vs.110).aspx – Harish
Я буду изучать это, когда вернусь домой - попробую сделайте образец рабочего кода для вас. – Neolisk