2009-08-10 8 views
7

लिंक से एक्सएमएल क्षेत्र में न्यूबी ...आप लिंक क्वेरी परिणाम को एक्सएमएल में कैसे बदलते हैं?

मेरे पास परिणाम के साथ एक लिंक क्वेरी है, और मैं उन परिणामों को एक्सएमएल में बदलना चाहता हूं। मुझे लगता है कि ऐसा करने के लिए अपेक्षाकृत आसान तरीका होना चाहिए, लेकिन मुझे यह नहीं मिल रहा है ...

धन्यवाद!

उत्तर

9

एक उदाहरण। आपको विचार मिलना चाहिए।

XElement xml = new XElement("companies", 
      from company in db.CustomerCompanies 
      orderby company.CompanyName 
      select new XElement("company", 
       new XAttribute("CompanyId", company.CompanyId), 
       new XElement("CompanyName", company.CompanyName), 
       new XElement("SapNumber", company.SapNumber), 
       new XElement("RootCompanyId", company.RootCompanyId), 
       new XElement("ParentCompanyId", company.ParentCompanyId) 
       ) 
      ); 
+0

आपको वहां एक टोएरे() की आवश्यकता है। –

+1

क्यों? मैंने इसे अपनी परियोजना से कॉपी किया। –

1

आपकी लिंक क्वेरी किसी प्रकार का ऑब्जेक्ट ग्राफ़ वापस करने जा रही है; एक बार आपके पास परिणाम हो जाने के बाद, आप किसी भी विधि का उपयोग एक्सएमएल में अनुवाद करने के लिए कर सकते हैं जिसे आप मानक वस्तुओं के साथ कर सकते हैं। एक्सएमएल से लिंक में नए एक्सएमएल वर्ग शामिल हैं जो एक्सएमएल बनाने का एक तरीका प्रस्तुत करते हैं (इसके लिए आरएटी का जवाब देखें), लेकिन आप एक्सएमएलएसरियलाइज़र का भी उपयोग कर सकते हैं और सटीक एक्सएमएल आउटपुट को नियंत्रित करने के लिए अपनी कक्षा/गुणों पर विशेषताओं को डाल सकते हैं।

1

नीचे दिया गया कोड "linq से entities" के लिए काम करेगा। आंकड़े स्मृति में होना चाहिए, बोलने के मामले में, काम करने के लिए। ToArray() के साथ किया गया है।

XElement xml = new XElement("companies", 
     from company in db.CustomerCompanies.AsEnumerable() 
     orderby company.CompanyName 
     select new XElement("company", 
      new XAttribute("CompanyId", company.CompanyId), 
      new XElement("CompanyName", company.CompanyName), 
      new XElement("SapNumber", company.SapNumber), 
      new XElement("RootCompanyId", company.RootCompanyId), 
      new XElement("ParentCompanyId", company.ParentCompanyId) 
      ) 
     ); 
+0

.अनुक्रम योग्य() IQueryable अभिव्यक्ति जनरेटर में बढ़ती गलत विधियों को रोकने के लिए पर्याप्त होना चाहिए। – springy76

+0

@ springy76 हाँ आपका बिल्कुल सही है। .अनुक्रम योग्य() को भी बेहतर काम करना चाहिए, अगर बेहतर नहीं है! – txavier