Given the following information, how can I combine these 2 linq queries into 1. Having a bit of trouble with the join statement.
‘projectDetails’ is just a list of ProjectDetails
ProjectDetails (1 to many) PCardAuthorizations
ProjectDetails (1 to many) ExpenditureDetails
Notice I am grouping by the same information and selecting the same type of information
var pCardAccount = from c in PCardAuthorizations
where projectDetails.Contains(c.ProjectDetail)
&& c.RequestStatusId == 2
group c by new { c.ProjectDetail, c.ProgramFund } into g
select new { Key = g.Key, Sum = g.Sum(x => x.Amount) };
var expenditures = from d in ExpenditureDetails
where projectDetails.Contains(d.ProjectDetails)
&& d.Expenditures.ExpenditureTypeEnum == 0
group d by new { d.ProjectDetails, d.ProgramFunds } into g
select new {
Key = g.Key,
Sum = g.Sum(y => y.ExpenditureAmounts.FirstOrDefault(a => a.IsCurrent && !a.RequiresAudit).CommittedMonthlyRecords.ProjectedEac)
};
I don’t think Mike’s suggestion will work here. These two queries are sufficiently different that combining them into one query will just make it more difficult to read.
new { c.ProjectDetail, c.ProgramFund }new { c.ProjectDetails, c.ProgramFunds }In fact there isn’t really anything that is the same. I’d recommend leaving it as it is.