protected void btnshow_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(string)); dt.Columns.Add("Name", typeof(string)); DataRow dr = dt.NewRow(); dr["ID"] = "1"; dr["Name"] = "Test1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = "2"; dr["Name"] = "Test2"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = "1"; dr["Name"] = "Test1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = "2"; dr["Name"] = "Test2"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = "1"; dr["Name"] = "Test1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = "2"; dr["Name"] = "Test2"; dt.Rows.Add(dr); DataTable dt1 = new DataTable(); dt1.Columns.Add("ID", typeof(string)); dt1.Columns.Add("Product", typeof(string)); dt1.Columns.Add("price", typeof(Decimal)); dr = dt1.NewRow(); dr["ID"] = "1"; dr["Product"] = "Test-Product_1"; dr["price"] = "100"; dt1.Rows.Add(dr); dr = dt1.NewRow(); dr["ID"] = "2"; dr["Product"] = "Test-Product_2"; dr["price"] = "200"; dt1.Rows.Add(dr); dr = dt1.NewRow(); dr["ID"] = "1"; dr["Product"] = "Test-Product_1"; dr["price"] = "400"; dt1.Rows.Add(dr); dr = dt1.NewRow(); dr["ID"] = "2"; dr["Product"] = "Test-Product_2"; dr["price"] = "400"; dt1.Rows.Add(dr); dr = dt1.NewRow(); dr["ID"] = "1"; dr["Product"] = "Test-Product_1"; dr["price"] = "700"; dt1.Rows.Add(dr); dr = dt1.NewRow(); dr["ID"] = "2"; dr["Product"] = "Test-pallavi_2"; dr["price"] = "200"; dt1.Rows.Add(dr); //dataGridView1.DataSource = dt; //dataGridView2.DataSource = dt1; var resultTable = from ct in dt.AsEnumerable() join ao in dt1.AsEnumerable() on (string)ct["ID"] equals (string)ao["ID"] select new { Name = (string)ct["Name"], product = (string)ao["Product"], price=(string)ao["price"] }; var collection = from t1 in dt.AsEnumerable() join t2 in dt1.AsEnumerable() on t1["ID"] equals t2["ID"] select new { ID=t1["ID"],Name = t1["Name"], Group = t2["Product"],price=t2["price"] }; DataTable result = new DataTable("NameGroups"); result.Columns.Add("ID", typeof(string)); result.Columns.Add("Name", typeof(string)); result.Columns.Add("Product", typeof(string)); result.Columns.Add("price", typeof(Decimal)); foreach (var item in collection) { result.Rows.Add(item.ID,item.Name, item.Group,item.price); } //Array a = resultTable.ToArray(); //DataTable tab = resultTable; //group by on result table with test1 and var grp_q = from i in result.AsEnumerable() group i by new { ID = i["ID"], name = i["Name"], product = i["Product"], price = i["price"] } into cgrp select new { ID = cgrp.Key.ID, name = cgrp.Key.name, product = cgrp.Key.product, price = cgrp.Key.price, total=cgrp.Sum(p=>p.Field("price")) }; DataTable result1 = new DataTable("NameGroups"); result1.Columns.Add("ID", typeof(string)); result1.Columns.Add("Name", typeof(string)); result1.Columns.Add("Product", typeof(string)); result1.Columns.Add("price", typeof(Decimal)); result1.Columns.Add("total", typeof(Decimal)); foreach (var item in grp_q) { result1.Rows.Add(item.ID, item.name, item.product, item.price,item.total); }