I have 2 datatables.
DataTable wdt = new DataTable();
wdt.Columns.Add("wName", typeof(string));
wdt.Columns.Add("userID1", typeof(string));
wdt.Columns.Add("userID2", typeof(string));
wdt.Columns.Add("userID3", typeof(string));
wdt.Columns.Add("dttime", typeof(DateTime));
DataTable mdt = new DataTable();
mdt.Columns.Add("iD", typeof(string));
mdt.Columns.Add("firstname", typeof(string));
mdt.Columns.Add("lastname", typeof(string));
DataTable dt = new DataTable();
dt.Columns.Add("wName", typeof(string));
dt.Columns.Add("user1", typeof(string));
dt.Columns.Add("user2", typeof(string));
dt.Columns.Add("user3", typeof(string));
dt.Columns.Add("dttime", typeof(DateTime));
for (int i = 0; i < wdt.Rows.Count; i++)
{
DataRow ndr = dt.NewRow();
ndr[0] = wdt.Select()[i][0].ToString();
ndr[1] = (from r in mdt.AsEnumerable()
where r.Field<int>("iD") == Convert.ToInt32(wdt.Rows[i][1])
select r.Field<string>("firstName") + " " + r.Field<string>("lastName")).First<string>();
ndr[2] = (from r in mdt.AsEnumerable()
where r.Field<int>("iD") == Convert.ToInt32(wdt.Rows[i][2])
select r.Field<string>("firstName") + " " + r.Field<string>("lastName")).First<string>();
ndr[3] = (from r in mdt.AsEnumerable()
where r.Field<int>("iD") == Convert.ToInt32(wdt.Rows[i][3])
select r.Field<string>("firstName") + " " + r.Field<string>("lastName")).First<string>();
ndr[4] = wdt.Select()[i][4].ToString();
dt.Rows.Add(ndr);
}
In the above code, i get a new datatable dt from calculating the data from wdt & mdt. But here, i have to run the LINQ syntaxes in a loop. Is it possible to avoid loop & the same work to be done in a single LINQ loop?
Datatable1 :
iD firstname lastname
1 b v
2 d c
3 f g
4 s o
....
Datatable2 :
Code userid1 userid2 userid3 work
1f 1 3 6 gg
2g 1 4 7 gg
3b 3 4 7 gg
4v 4 3 8 gg
Expected New Datatable :
Code username1 username2 username3 work
1f a b c gg
2g d f r gg
3b c h g gg
4v d s h gg
Here, iD from datatable1 & userID1, userID2, userID3 are same.