我有幾行代碼,如下所示。刪除XDocument中的重複條目
XDocument rssDocDistinct = new XDocument(new XElement("rss",
new XElement("channel",
from node in rssDoc.Element("rss").Element("channel").Descendants("item")
select node)));
任何人都可以幫助我找出如何獲得rssDoc中不同的「項目」?我不想要任何重複。
感謝您的任何幫助。
編輯:
<rss version="2.0">
<channel>
<title></title>
<link></link>
<description></description>
<copyright></copyright>
<ttl></ttl>
<item>
<title></title>
<description></description>
<link></link>
<pubDate></pubDate>
</item>
<item>
<title></title>
<description> </description>
<link></link>
<pubDate></pubDate>
</item>
</channel>
</rss>
rssDocDistinct應該是這樣的,沒有重複的項目元素(即具有相同的標題項,鏈接,說明,pubdate的只出現一次)
<item>
<title></title>
<description></description>
<link></link>
<pubDate></pubDate>
</item>
<item>
<title></title>
<description> </description>
<link></link>
<pubDate></pubDate>
</item>
編輯: 感謝您幫助我們瞭解如何讓一個IEqualityComparer成爲polishchuc建議的幫助。
public class ItemComparer : IEqualityComparer<XElement>
{
#region IEqualityComparer<XElement> Members
public bool Equals(XElement x, XElement y)
{
return (string)x.Element("title") == (string)y.Element("title")
&& (string)x.Element("description") == (string)y.Element("description")
&& (string)x.Element("link") == (string)y.Element("link")
&& (string)x.Element("pubDate") == (string)y.Element("pubDate");
}
public int GetHashCode(XElement obj)
{
return ((string)obj.Element("title")).GetHashCode()
+ ((string)obj.Element("description")).GetHashCode()
+ ((string)obj.Element("link")).GetHashCode()
+ ((string)obj.Element("pubDate")).GetHashCode();
}
#endregion
}
這取決於你是什麼「不同」的意思,需要看樣品XML措施,假設它的意思是「從任何其他項的至少一個屬性值不同的」 – BrokenGlass
我只是希望所有的重複刪除。 – theDawckta
沒有你發佈你的XML,沒有人可以給你一個具體的答案 - 我們怎麼知道你的「項目」有什麼屬性? – BrokenGlass