Pages

Showing posts with label datatable. Show all posts
Showing posts with label datatable. Show all posts

Tuesday, September 24, 2013

Copy unique rows of a column from one Datatable to other Datatable - LINQ



Here , We have to copy the unique rows of column 'CategoryName' from DataTable 'dt_old' to the 'Category' column of DataTable 'dt_Categories' using LINQ.


 DataTable dt_Categories = new DataTable();
 dt_Categories.Columns.Add("Category", Type.GetType("System.String"));

DataTable dt_old = new DataTable();
dt_old = (DataTable)Session["dt"];


 dt_Categories = dt_old.AsEnumerable().Select(row =>
            {
                DataRow newRow = dt_Categories.NewRow();
                newRow["Category"] = row.Field<string>("CategoryName");
                return newRow;
            }).Distinct(DataRowComparer.Default).CopyToDataTable();






Monday, September 2, 2013

Create XML using XML Writer


 Create Datatable with Data :

  private DataTable createDT()
    {
        // Initialise Datatable
        DataTable dt = new DataTable("root");
        // add columns with their Datatypes
        dt.Columns.Add("title", Type.GetType("System.String"));                     
        dt.Columns.Add("metakeyword", Type.GetType("System.String"));            
        dt.Columns.Add("metadescription", Type.GetType("System.String"));
        dt.Columns.Add("heading", Type.GetType("System.String"));
        dt.Columns.Add("albumurl", Type.GetType("System.String"));
        dt.Columns.Add("noofimg", Type.GetType("System.String"));
        dt.Columns.Add("albumname", Type.GetType("System.String"));
        dt.Columns.Add("date", Type.GetType("System.String"));
        dt.Columns.Add("imagename", Type.GetType("System.String"));
        dt.Columns.Add("imageurl", Type.GetType("System.String"));
        dt.Columns.Add("position", Type.GetType("System.String"));
        dt.Columns.Add("imagealbumname", Type.GetType("System.String"));

        DataRow dr = dt.NewRow();
        dr["title"] = "fafasf";
        dr["metakeyword"] = "dfvvbb";
        dr["metadescription"] = "qwert";
        dr["heading"] = "vgttt";
        dr["albumurl"] = "1313";
        dr["noofimg"] = "asdad";
        dr["albumname"] = "opopi";
        dr["date"] = "t56647";
        dr["imagename"] = "gfgfg";
        dr["imageurl"] = "jhkhjk";
        dr["position"] = "kjhjk";
        dr["imagealbumname"] = "etert";

        dt.Rows.Add(dr);
        return dt;
    }


Create XML from Datatable as you want :

 private void WriteXML(DataTable dt)
    {
        using (XmlWriter writer = XmlWriter.Create(MapPath("my.xml")))           // creates 'employee.xml' to write data from datatable
        {
            int i = 0;
            writer.WriteStartDocument();
            writer.WriteStartElement(dt.TableName);                                        // create root node

            for (; i < 8; i++)
            {
                writer.WriteElementString(dt.Columns[i].ColumnName, dt.Rows[0][i].ToString());
            }

            writer.WriteStartElement("Gallery");

            for (; i < dt.Columns.Count; i++)                                                    // create sub root..
            {
                writer.WriteElementString(dt.Columns[i].ColumnName, dt.Rows[0][i].ToString());
            }
            writer.WriteEndElement();
            writer.WriteEndElement();                                              // end root node
            writer.WriteEndDocument();
        }
    }





Call:

protected void Page_Load(object sender, EventArgs e)
    {
                  WriteXML(createDT());
     }



Output :

my.xml

<?xml version="1.0" encoding="utf-8"?>
<root>
  <title>fafasf</title>
  <metakeyword>dfvvbb</metakeyword>
  <metadescription>qwert</metadescription>
  <heading>vgttt</heading>
  <albumurl>1313</albumurl>
  <noofimg>asdad</noofimg>
  <albumname>opopi</albumname>
  <date>t56647</date>
  <Gallery>
    <imagename>gfgfg</imagename>
    <imageurl>jhkhjk</imageurl>
    <position>kjhjk</position>
    <imagealbumname>etert</imagealbumname>
  </Gallery>
</root>

Create XML file from Datatable with some additonal nodes.

Create Datatable (u can use your datatable)

 private DataTable createDT()
    {
        // Initialise Datatable
        DataTable dt = new DataTable();
        // add columns with their Datatypes
        dt.Columns.Add("Id", Type.GetType("System.String"));                    // decimal type
        dt.Columns.Add("Country_ID", Type.GetType("System.String"));             // string type
        dt.Columns.Add("Name", Type.GetType("System.String"));
        dt.Columns.Add("Description", Type.GetType("System.String"));

        DataRow dr = dt.NewRow();
        dr["Id"] = "323";
        dr["Country_ID"] = "india";
        dr["Name"] = "isaa";
        dr["Description"] = "ewewed";
        dt.Rows.Add(dr);
        return dt;
    }



Create XML file from datatable "dt"

  private void WriteXML(DataTable dt)
    {
        using (XmlWriter writer = XmlWriter.Create(MapPath("employees.xml")))       // creates 'employee.xml' to write data from datatable
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("root");                                        // create root node named 'root'

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                writer.WriteElementString("ID", dt.Rows[i]["Id"].ToString());                        // create childs of the root
                writer.WriteElementString("Country_ID", dt.Rows[i]["Country_ID"].ToString());

                writer.WriteStartElement("Gallery");                                     // create sub root..
                writer.WriteElementString("Name", dt.Rows[i]["Name"].ToString());                  // create sub child nodes..
                writer.WriteElementString("Description", dt.Rows[i]["Description"].ToString());
                writer.WriteEndElement();
            }
            writer.WriteEndElement();                                              // end root node
            writer.WriteEndDocument();
        }
    }



Output : (employees.xml)

<?xml version="1.0" encoding="utf-8"?>
<root>
  <ID>323</ID>
  <Country_ID>india</Country_ID>
  <Gallery>
    <Name>isaa</Name>
    <Description>ewewed</Description>
  </Gallery>
</root>