c# - Linq to XML join and add data? -


इस तरह एक्सएमएल को दिया गया:

  & lt; root & gt; & LT; तत्व & gt; & LT; ईद & gt; 1 & lt; / आईडी & gt; & Lt; / तत्व & gt; & LT; तत्व & gt; & LT; ईद & gt; 2 & lt; / आईडी & gt; & Lt; / तत्व & gt; & LT; तत्व & gt; & LT; ईद & gt; 3 & lt; / आईडी & gt; & Lt; / तत्व & gt; & Lt; / रूट & gt;   

और इस डेटा के साथ एक IEnumerable:

  [0] = {आईडी = 1, डेटा = 429} [1] = {आईडी = 2, डेटा = 271} [2] = {आईडी = 3, डेटा = 328}   

क्या LINQ से एक्सएमएल का उपयोग करने के लिए आम तौर पर एक्सएमएल के साथ IEnumerable डेटा में शामिल होने का एक शानदार तरीका < कोड> आईडी के साथ डेटा को लिंक करने के लिए प्रत्येक तत्व के लिए व्यक्तिगत रूप से पूछताछ किए बिना

तो परिणाम ऐसा दिखेगा:

  & lt; root & gt; & LT; तत्व & gt; & LT; ईद & gt; 1 & lt; / आईडी & gt; & LT; डाटा & gt; 429 & lt; / डाटा & gt; & Lt; / तत्व & gt; & LT; तत्व & gt; & LT; ईद & gt; 2 & lt; / आईडी & gt; & LT; डाटा & gt; 271 & lt; / डाटा & gt; & Lt; / तत्व & gt; & LT; तत्व & gt; & LT; ईद & gt; 3 & lt; / आईडी & gt; & LT; डाटा & gt; 328 & lt; / डाटा & gt; & Lt; / तत्व & gt; & Lt; / रूट & gt;   

केवल एक चीज जो मैं कर सकती हूं वह ऐसा कुछ है, लेकिन मैं उम्मीद कर रहा था कि एक क्लीनर पद्धति थी:

  foreach (var d in MyIEnumerable ) {XElement तत्व = (MyXDoc.Elements में एक्स से ("तत्व") जहां x.Element ("Id")। मान == डी.आई.डी. चुनें एक्स)। सिंगल (); Element.Add (नया XElement ("डेटा", डी.डेटा)); }    

एक तरह से Tuple & lt; Element, XElement & gt; / code>। ( एलिमेंट उस वर्ग में है जिसमे आईडी और डेटा है।)

  var आउटपुट = एलएलएल से एलएलएल में xdoc.Root.Elements ("Element in xmlEl ") El.Id पर int.Parse बराबर (xmlEl.Element (" Id ")। मान) नए ट्यूपल का चयन करें & lt; Element, XElement & gt; (एल, xmlEl); विदेशी वस्तु (उत्पादन में विभिन्न मद) {item.Item2.Add (नया XElement ("डेटा", item.Item1.Data)); }   

यदि आपके पास ट्यूपल्स नहीं हैं तो आप इसके बजाय एक गुमनाम वर्ग बना सकते हैं।

  नया चुनें {ObjEl = el, XmlEl = xmlEl} < / कोड>   

Comments