Reputation: 540
Hi i have two linq statements:
from d in dtDummy.AsEnumerable()
where d["Role_id"].ToString() == "0"
select d;`
from d in dtDummy.AsEnumerable()
join t in dtTest.AsEnumerable() on d.Field<int>("role_id")
equals t.Field<int>("role_id")
where (d["role_dept"].ToString() != t["role_dept"].ToString() || d["role_dept"].ToString() != t["role_dept"].ToString() || d["role_desc"].ToString() != t["role_desc"].ToString() || d["role_all_clients"].ToString() != t["role_all_clients"].ToString() || d["role_admin"].ToString() != t["role_admin"].ToString() || d["role_super_admin"].ToString() != t["role_super_admin"].ToString())
select d;
How to write a linq single statement to get the same result as i would get if i do union on both the statement.
Upvotes: 0
Views: 130
Reputation: 1500185
Well you can use Union
:
var union = (from d in dtDummy...).Union
(from d in dtDummy...);
Personally I'd separate the two out for clarity though:
var query1 = ...;
var query2 = ...;
var union = query1.Union(query2);
I'd also use Field<string>
rather than calling ToString
... or probably project these into a cleaner object model which would allow your queries to be a lot simpler.
Upvotes: 4
Reputation: 11209
(from d in dtDummy.AsEnumerable() where d["Role_id"].ToString() == "0" select d).union
(from d in dtDummy.AsEnumerable() join t in dtTest.AsEnumerable() on d.Field<int>("role_id") equals t.Field<int>("role_id") where (d["role_dept"].ToString() != t["role_dept"].ToString() || d["role_dept"].ToString() != t["role_dept"].ToString() || d["role_desc"].ToString() != t["role_desc"].ToString() || d["role_all_clients"].ToString() != t["role_all_clients"].ToString() || d["role_admin"].ToString() != t["role_admin"].ToString() || d["role_super_admin"].ToString() != t["role_super_admin"].ToString()) select d)
Upvotes: 1