nested linq queries -


मैं इस तरह एक XML फ़ाइल के साथ काम कर रहा हूं।

  & lt; लिफाफा xmlns = "http://schemas.xmlsoap.org/soap/envelope/"> & LT; body & gt; & LT; Element1 & gt; & Lt; एलिमेंट 2 दिन = "2009-10-18" & gt; & Lt; Element3 नाम = "जो" & gt; & Lt; एलिमेंट 4 समय = "1" & gt; & Lt; एलिमेंट 5 राशि = "0" मूल्य = "16.58" / & gt; & Lt; एलिमेंट 5 राशि = "1" मूल्य = "18.58" / & gt; & Lt; एलिमेंट 5 राशि = "2" मूल्य = "20.58" / & gt; & Lt; / Element4 & gt; & Lt; / Element3 & gt; & Lt; Element3 name = "Fred" & gt; & Lt; एलिमेंट 4 समय = "5" & gt; & Lt; एलिमेंट 5 राशि = "1" मूल्य = "15.41" / & gt; & Lt; एलिमेंट 5 राशि = "2" मूल्य = "16.41" / & gt; & Lt; एलिमेंट 5 राशि = "3" मूल्य = "17.41" / & gt; & Lt; एलिमेंट 5 राशि = "4" मूल्य = "18.41" / & gt; & Lt; / Element4 & gt; & Lt; / Element3 & gt; & Lt; / Element2 & gt; & Lt; / Element1 & gt; & Lt; / body & gt; & Lt; / लिफाफा & gt;  

मुझे सभी Element3 नोड्स के माध्यम से लूप की आवश्यकता होती है और फिर सभी Element5 नोड्स के माध्यम से इस तरह के आउटपुट को प्राप्त करने के लिए लूप की आवश्यकता होती है।

  दिन, नाम, समय, राशि, मूल्य 2009-10-18, जो, 1, 0, 16.58, 2009-10-18, जो, 1, 1, 18.58, 2009-10-18, जो, 1, 2, 20.58, 2009-10-18, जो, 1, 1, 16.58, 2009-10-18, फ़्रेड, 5, 0, 15.41 आदि  

ऐसा करने के लिए मेरी लिनक्स क्वेरी नीचे की तरह कुछ दिखती है जो मैंने सोचा कि जब तक मैं नहीं एहसास हुआ कि यह केवल पहली एलिमेंट 5 नोड को हथियाने के लिए आया था।

<पूर्व> XDocument दस्तावेज़ = XDocument.Load (@ "myfile.xml"); डेटा कंटैन्टेक्स सी = नए डाटाकॉन्टेक्स (); तत्वों ("एलिमेंट 2")। तत्व ("एलिमेंट 3") नए मायटेबल का चयन करें () {MyKey = Guid.NewGuid (), दिन = कन्वर्ट.ToDateTime (c.Parent.Attribute ("दिन")। मान) नाम = सी। प्रथम अटूट। मूल्य, घंटा = कन्वर्ट। ToInt32 (c.Element ("Element4")। FirstAttribute। मूल्य (मूल्य) = कन्वर्ट.ToDecimal (c.Element ("Element4")। एलिमेंट ("एलिमेंट 5") विशेषता ("मूल्य")। मान), राशि = कन्वर्ट.ToDecimal (c.Element ("Element4")। एलिमेंट ("एलिमेंट 5") विशेषता ("राशि")। मान)}; st.mytable.InsertAllOnSubmit (docxml); st.SubmitChanges ();

< P> हर बयान से मूल रूप से एक foreach-loop (इसके बारे में सोचना आसान तरीका है)। ध्यान दें: मुझे कुछ मूल संबंधों को बदलना पड़ा
 < कोड> XDocument दस्तावेज़ = XDocument.Load (@ "myfile.xml"); डेटा कंटैन्टेक्स सी = नए डाटाकॉन्टेक्स (); तत्व ("एलिमेंट 1") तत्व ("एलिमेंट 2")। तत्व ("एलिमेंट 3")। तत्व ("एलिमेंट 4") से ई में c.Elements ("Element5") नए mytable का चयन करें () {MyKey = Guid.NewGuid (), दिन = कन्वर्ट। ToDateTime (c.Parent.Parent.Attribute ("day")। Value) name = c.Parent पहले विशेषता। वैल्यू, घंटा = कन्वर्ट.ToInt32 (c.FirstAttribute.Value), मूल्य = कन्वर्ट.ToDecimal (ई। विशेषता ("मूल्य")। मान), राशि = कन्वर्ट.ToDecimal (ई। विशेषता ("राशि") । वैल्यू)}; st.mytable.InsertAllOnSubmit (docxml); st.SubmitChanges ();  

आप let-स्टेटमेंट और बेहतर नामों का उपयोग करके कोड को थोड़ा और पठनीय बना सकते हैं:

  var docxml = element4 में doc.Elements में ( तत्व ("एलिमेंट 1") तत्व ("एलिमेंट 1")। तत्व ("एलिमेंट 2")। तत्व ("एलिमेंट 3")। तत्व ("एलिमेंट 4") तत्व 3 = तत्व 4 दें। गुणक तत्व = 2 तत्व 3 दें। सी। एलेमेंट्स ("एलिमेंट 5") में element5 से माता-पिता ...  

मैं कोड का परीक्षण नहीं कर सकता, क्योंकि मैं मैकबुक पर हूं। उम्मीद है कि यह मदद करता है।


Comments

Popular posts from this blog

.net - C# List<T>.Find(x=>x.Rectangle.Contains(Point)) FAIL -

iphone - Smoothing a rounded stroke in Core Graphics -

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -