2012-10-25 14 views
6

DataTable In C# of following formatसे एक DataTable

का प्रयोग सी # एक XML बनाएँ: मैं एक्सएमएल में इस तालिका में परिवर्तित करना चाहते। कृपया पंक्ति नाम में गलतियों को अनदेखा करें। यह परीक्षण डेटा है। मैंने एक्सएमएल में परिवर्तित दो कॉलम का नमूना दिया है और इसी पंक्तियों को विशेषताओं के रूप में परिवर्तित किया है। लेकिन मैं वास्तव में सभी कॉलम के लिए चाहता हूँ। यह एक डाटाटेबल है।

<ListDataCollateralDials> 
           <DataCollateralDials Type="Conv"> 
            <Multiplier>1</Multiplier> 
            <Seasoning>1</Seasoning> 
            <Lockin>1</Lockin> 
            <Multiplier>1</Multiplier> 
            <ElbowShift>0</ElbowShift> 
            <Steepness>1</Steepness> 
            <Burnout>1</Burnout> 
            <Adjustment >1</Adjustment> 
            <Effect>1</Effect> 
            <Decay>1</Decay> 
            <Outs>1</Outs> 
            <Base>700</Base> 
            <Slope>1</Slope> 
            <Base>80</Base> 
            <Slope2>1</Slope2> 
            <Base2>200</Base2> 
            <Slope3>1</Slope3> 
            <Height>0</Height> 
            <Length>0</Length> 
            <Height2>0</Height2> 
            <Length2>0</Length2> 
            <Elbow>0</Elbow> 
               <Multiplier2>1</Multiplier2> 
            <Multiplier3>1</Multiplier3> 

           </DataCollateralDials> 
<DataCollateralDials Type="Conv"> 
           <Multiplier>1</Multiplier> 
           <Seasoning>1</Seasoning> 
           <Lockin>1</Lockin> 
           <Multiplier>1</Multiplier> 
           <ElbowShift>0</ElbowShift> 
           <Steepness>1</Steepness> 
           <Burnout>1</Burnout> 
           <Adjustment >1</Adjustment> 
           <Effect>1</Effect> 
           <Decay>1</Decay> 
           <Outs>1</Outs> 
           <Base>700</Base> 
           <Slope>1</Slope> 
           <Base>80</Base> 
           <Slope2>1</Slope2> 
           <Base2>200</Base2> 
           <Slope3>1</Slope3> 
           <Height>0</Height> 
           <Length>0</Length> 
           <Height2>0</Height2> 
           <Length2>0</Length2> 
           <Elbow>0</Elbow> 
           <Multiplier2>1</Multiplier2> 
           <Multiplier3>1</Multiplier3> 

          </DataCollateralDials> 
</ListDataCollateralDials> 
+0

* <डेटाकॉलपाटियल डायल प्रकार = "ग्लेन"> दूसरे xelement में। यह टाइपो त्रुटि – StackOverflowVeryHelpful

+0

डेटाटेबल.WriteXml का उपयोग http://msdn.microsoft.com/en-us/library/system.data.datatable.writexml.aspx –

उत्तर

4
public static string ToXml(this DataTable table, int metaIndex = 0) 
{ 
    XDocument xdoc = new XDocument(
     new XElement(table.TableName, 
      from column in table.Columns.Cast<DataColumn>() 
      where column != table.Columns[metaIndex] 
      select new XElement(column.ColumnName, 
       from row in table.AsEnumerable() 
       select new XElement(row.Field<string>(metaIndex), row[column]) 
       ) 
      ) 
     ); 

    return xdoc.ToString(); 
} 

यह मेरे लिए महान काम किया कोशिश कर सकते हैं। धन्यवाद stackoverflow।

3

DataTable तरह आप पंक्तियों, नहीं स्तंभों पर पुनरावृति करने के लिए डिजाइन किए हैं। स्तंभ-प्रमुख क्रम में DataTable को बनाए रखने के लिए अंतर्निहित कुछ भी नहीं है। आप कस्टम कोड का उपयोग करने जा रहे हैं। छद्म कोड होगा कुछ की तरह:

foeeach(DataColumn) 
    if(name != "Name") 
    output column header 
    foreach(DataRow) 
     output row value 
+0

मुझे पहले कॉलम को छोड़ना होगा। अगर कोई मुझे कोड प्रदान कर सकता है तो यह बहुत अच्छा होगा – StackOverflowVeryHelpful

+0

वैसे मैंने जोड़ा "नाम" कॉलम छोड़ दिया लेकिन आपको अपने काम पर कुछ काम करना होगा। यदि आपके पास विशिष्ट प्रश्न हैं तो आप उन्हें नए प्रश्नों के रूप में पोस्ट कर सकते हैं लेकिन मुझे संदेह है कि आप किसी के लिए पूरी चीज लिखने जा रहे हैं। –

संबंधित मुद्दे