efcore多表查询出错_利用EF Core的Lambda表达式和Join进行多表联动查询

这段代码展示了如何在EF Core中处理多表查询,特别是针对银行合作意向单中的金融分期申请统计。通过遍历银行列表,并使用Lambda表达式和Join操作,分别计算了不同状态(如等待接受、已接受、未接受等)的申请数量,最后进行总计汇总。
摘要由CSDN通过智能技术生成

#region 获取各个合作银行的意向单中金融分期申请情况

///

///获取各个合作银行的意向单中金融分期申请情况///

///

public ListGetReadyApplyStatistics(ReadyApplyStatisticsViewModel_Search searchmodel)

{

List list = new List();var banklist = db.N_LoanBank.Where(a => a.Sort != 0).OrderBy(a =>a.Sort).ToList();foreach (var item inbanklist)

{

ReadyApplyStatisticsViewModel model= newReadyApplyStatisticsViewModel();

model.BankName=item.BankName;var ReadyApplyQuery = db.N_LoanReadyApply.Where(a => a.BankId == item.BankId && a.CreateDate > searchmodel.ReadyApplyStartTime && a.CreateDate b.BankId == item.BankId && b.ApplyTime>searchmodel.ApplyStartTime && b.ApplyTime

{

ApplyQuery= ApplyQuery.Where(b=>b.BusinessType==searchmodel.BusinessType);

}if(!string.IsNullOrEmpty(searchmodel.ApplyChannel))

{

ApplyQuery= ApplyQuery.Where(b=>b.ApplyChannel.Contains(searchmodel.ApplyChannel));

}

model.ReadyApplyCount=ReadyApplyQuery.Count();

model.ApplyCount= ReadyApplyQuery.Join(ApplyQuery, a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.WaitAcceptCount= ReadyApplyQuery.Join(ApplyQuery.Where(b=>b.AcceptStatus==0 && b.CheckStatus == 0 && DateTime.Now <= b.AcceptExpiryTime), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.AcceptCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 0 && b.CheckStatus == 1), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.NotAcceptCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 2), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.CheckCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 1 && b.CheckStatus==1), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.NotCheckCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 1 && b.CheckStatus == 2), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.CancelCheckCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 1 && b.CheckStatus == 3), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.MoneyCheckCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 1 && b.CheckStatus == 1 && b.PaymentStatus==1 && b.MoneyCheckStatus==1), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

model.NotMoneyCheckCount= ReadyApplyQuery.Join(ApplyQuery.Where(b => b.AcceptStatus == 1 && b.CheckStatus == 1 && b.PaymentStatus == 1 && b.MoneyCheckStatus == 0), a => a.BidderNo, b => b.BidderNo, (a, b) => new { BidderNo =a.BidderNo }).Count();

list.Add(model);

}

ReadyApplyStatisticsViewModel summodel= newReadyApplyStatisticsViewModel();

summodel.BankName= "总计";

summodel.ReadyApplyCount= list.Sum(a =>a.ReadyApplyCount);

summodel.ApplyCount= list.Sum(a =>a.ApplyCount);

summodel.WaitAcceptCount= list.Sum(a =>a.WaitAcceptCount);

summodel.AcceptCount= list.Sum(a =>a.AcceptCount);

summodel.NotAcceptCount= list.Sum(a =>a.NotAcceptCount);

summodel.CheckCount= list.Sum(a =>a.CheckCount);

summodel.NotCheckCount= list.Sum(a =>a.NotCheckCount);

summodel.CancelCheckCount= list.Sum(a =>a.CancelCheckCount);

summodel.MoneyCheckCount= list.Sum(a =>a.MoneyCheckCount);

summodel.NotMoneyCheckCount= list.Sum(a =>a.NotMoneyCheckCount);

list.Add(summodel);returnlist;

}#endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值