var receives = from generate in _db.TDatOtherFeeGenerates.AsNoTracking()
where generate.IsEanble == 1 && generate.CusId == Query.CusID && generate.ProjectId == Query.ProjectID
join record in _db.TDatOtherFeeRecords.AsNoTracking() on generate.ProjectChildNum equals record.ProjectChildNum into joinRecord
from exRecord in joinRecord.DefaultIfEmpty()
join pro in _db.TSysOtherFeeProjectSettings.AsNoTracking() on generate.ProjectId equals pro.ProjectId into joinPro
from exPro in joinPro.DefaultIfEmpty()
group new { generate, exRecord, exPro }
by new
{
generate.ProjectChildNum,
generate.CusId,
generate.ProjectId,
exPro.ProjectName,
generate.ReceiveMoney
}
into generateGroup
select new ChargeSettlementOutModel
{
CusID = generateGroup.Key.CusId,
ProjectID = generateGroup.Key.ProjectId,
ProjectName = generateGroup.Key.ProjectName,
ReceiveMoney = generateGroup.Key.ReceiveMoney??0,
RealIncomeMoney = generateGroup.Sum(s=>s.exRecord.RealIncomeMoney??0),
OwnMoney = (generateGroup.Key.ReceiveMoney ?? 0) - (generateGroup.Sum(s => s.exRecord.RealIncomeMoney ?? 0)),
IsOwnMoney = ((generateGroup.Key.ReceiveMoney ?? 0) - generateGroup.Sum(s => s.exRecord.RealIncomeMoney ?? 0)) > 0,
ProjectChildNum = generateGroup.Key.ProjectChildNum
};
针对一对多分组求和查询