Can I clone an IQueryable in linq? For UNION purposes?

Posted by user169867 on Stack Overflow See other posts from Stack Overflow or by user169867
Published on 2010-06-14T20:45:34Z Indexed on 2010/06/14 21:12 UTC
Read the original article Hit count: 261

Filed under:
|
|

I have a table of WorkOrders. The table has a PrimaryWorker & PrimaryPay field. It also has a SecondaryWorker & SecondaryPay field (which can be null).

I wish to run 2 very similar queries & union them so that it will return a Worker Field & Pay field. So if a single WorkOrder record had both the PrimaryWorker and SecondaryWorker field populated I would get 2 records back.

The "where clause" part of these 2 queries is very similar and long to construct. Here's a dummy example

var q = ctx.WorkOrder.Where(w => w.WorkDate >= StartDt && w.WorkDate <= EndDt);

if(showApprovedOnly)
{
   q = q.Where(w => w.IsApproved);
}
//...more filters applied

Now I also have a search flag called "hideZeroPay". If that's true I don't want to include the record if the worker was payed $0. But obviously for 1 query I need to compare the PrimaryPay field and in the other I need to compare the SecondaryPay field.

So I'm wondering how to do this.

Can I clone my base query "q" and make a primary & secondary worker query out of it and then union those 2 queries together?

I'd greatly appreciate an example of how to correctly handle this.

Thanks very much for any help.

© Stack Overflow or respective owner

Related posts about c#

Related posts about LINQ