Niar
Niar

Reputation: 540

Union of two linq statement

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

Answers (2)

Jon Skeet
Jon Skeet

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

Tarik
Tarik

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

Related Questions