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?
Hmm, I’m not sure that I understand you intention. But I think cloning is not neccessary. Why don’t you split two new queries from your base query?
After defining your queries you can interpret them (per enumeration) and retrieve your different results.