Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from dt1 in dsResults.Tables[0].AsEnumerable()
- join dt2 in dsResults.Tables[1].AsEnumerable()
- on dt1 .Field<decimal>("RecordId") equals dt2.Field<decimal>("RecordId2")
- select dt1 ;
- public class YourObject
- {
- public string Pror1 {get;set;}
- public string Pror2 {get;set;}
- }
- List<YourObject> result=from row1 in dsResults.Tables[0].AsEnumerable()
- join row2 in dsResults.Tables[1].AsEnumerable()
- on row1.Field<decimal>("RecordId") equals row2.Field<decimal>("RecordId2")
- select new YourObject()
- {
- Pror1=row1.prop1,
- Prop2=row2.prop2,
- ......
- }.ToList();
- from row1 in dsResults.Tables[0].AsEnumerable()
- join row2 in dsResults.Tables[1].AsEnumerable()
- on row1.Field<decimal>("RecordId") equals row2.Field<decimal>("RecordId2")
- select new { RowTable1 = row1, RowTable2 = row2}; //anonymous type
- from dt1 in dsResults.Tables[0].AsEnumerable()
- join dt2 in dsResults.Tables[1].AsEnumerable()
- on dt1 .Field<decimal>("RecordId") equals dt2.Field<decimal>("RecordId2")
- select new
- {
- Property1 = dt1 .Field<decimal>("RecordId"),
- Property2 = dt2 .Field<decimal>("RecordId2")
- ......
- }
- ;
- from dt1 in dsResults.Tables[0].AsEnumerable()
- join dt2 in dsResults.Tables[1].AsEnumerable()
- on dt1 .Field<decimal>("RecordId") equals dt2.Field<decimal>("RecordId2")
- select new
- {
- dt1,
- dt2
- }
- ;
- var parent = new DataTable();
- parent.Columns.Add("Id", typeof(int));
- parent.Columns.Add("Name", typeof(string));
- var child = new DataTable();
- child.Columns.Add("Id", typeof(int));
- child.Columns.Add("ParentId", typeof(int));
- child.Columns.Add("ChildName", typeof(string));
- parent.Rows.Add(1, "A");
- parent.Rows.Add(2, "B");
- child.Rows.Add(1, 1, "a1");
- child.Rows.Add(2, 1, "a2");
- child.Rows.Add(3, 2, "b1");
- child.Rows.Add(4, 2, "b2");
- var flat = new DataTable();
- foreach (DataColumn col in parent.Columns.Cast<DataColumn>()
- .Union(child.Columns.Cast<DataColumn>()))
- {
- if (!flat.Columns.Contains(col.Caption))
- flat.Columns.Add(col.Caption, col.DataType);
- }
- var q = from p in parent.AsEnumerable()
- join c in child.AsEnumerable() on p.Field<int>("Id") equals c.Field<int>("ParentId")
- select new { p, c };
- foreach (var pc in q)
- {
- var row = flat.NewRow();
- foreach (var cell in pc.p.Table.Columns.Cast<DataColumn>()
- .Zip(pc.p.ItemArray, (col, item) => new { col.Caption, item} ))
- {
- row[cell.Caption] = cell.item;
- }
- foreach (var cell in pc.c.Table.Columns.Cast<DataColumn>()
- .Zip(pc.c.ItemArray, (col, item) => new { col.Caption, item} ))
- {
- row[cell.Caption] = cell.item;
- }
- flat.Rows.Add(row);
- }
- //flat.Dump(); // If in linqpad.
- Form f = new Form();
- DataGridView v = new DataGridView();
- v.Dock = DockStyle.Fill;
- v.DataSource = flat;
- f.Controls.Add(v);
- f.Show();
- DataTable targetTable = dsResults.Tables[0].Clone();
- var dt2Columns = dsResults.Tables[1].Columns.OfType<DataColumn>().Select(dc =>
- new DataColumn(dc.ColumnName, dc.DataType, dc.Expression, dc.ColumnMapping));
- targetTable.Columns.AddRange(dt2Columns.ToArray());
- var rowData =
- from row1 in dsResults.Tables[0].AsEnumerable()
- join row2 in dsResults.Tables[1].AsEnumerable()
- on row1.Field<decimal>("RecordId") equals row2.Field<decimal>("RecordId2")
- select row1.ItemArray.Concat(row2.ItemArray).ToArray();
- foreach (object[] values in rowData)
- targetTable.Rows.Add(values);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement