आपका पहला आवेग लगभग सही था। :) प्रति डेविड B के रूप में, यदि आप LINQ नहीं बताया कि वास्तव में आप कैसे समानता को परिभाषित करने और फिर इसे XElements का एक समूह देना, यह उन्हें संदर्भ से तुलना करेंगे। सौभाग्य से, आप इसे एक IEqualityComparer
निर्दिष्ट करके विभिन्न मानदंडों का उपयोग करने के लिए कह सकते हैं (मूल रूप से, एक ऑब्जेक्ट जिसमें एक समान विधि है जो सत्य लौटाती है यदि दो XElements आपकी परिभाषा के अनुसार बराबर हैं और अन्यथा और गेटहैशकोड विधि जो XElement लेती है और आपके समानता मानदंडों के आधार पर एक हैश कोड देता है)।
उदाहरण के लिए
:
var elements = xDocument.Descendants(w + "sdt")
.Union(otherDocument.Descendants(w + "sdt", new XElementComparer())
.RestOfYourCode
...
अपनी परियोजना में कहीं और
public class XElementComparer : IEqualityComparer‹XElement› {
public bool Equals(XElement x, XElement y) {
return ‹X and Y are equal according to your standards›;
}
public int GetHashCode(XElement obj) {
return ‹hash code based on whatever parameters you used to determine
Equals. For example, if you determine equality based on the ID
attribute, return the hash code of the ID attribute.›;
}
}
नोट: इतना सटीक कोड नहीं है मैं घर पर ढांचे की जरूरत नहीं है परीक्षण और IEqualityComparer कोड here से है (दूसरी पोस्ट तक स्क्रॉल करें)।
यह सही था। धन्यवाद! –