• 利用EF Core的Lambda表达式和Join进行多表联动查询


    直接上干货,利用EF Core的Lambda表达式和Join进行多表联动查询的实战应用

            #region 获取各个合作银行的意向单中金融分期申请情况
            /// <summary>
            /// 获取各个合作银行的意向单中金融分期申请情况
            /// </summary>
            /// <returns></returns>
            public List<ReadyApplyStatisticsViewModel> GetReadyApplyStatistics(ReadyApplyStatisticsViewModel_Search searchmodel)
            {
                List<ReadyApplyStatisticsViewModel> list = new List<ReadyApplyStatisticsViewModel>();
                var banklist = db.N_LoanBank.Where(a => a.Sort != 0).OrderBy(a => a.Sort).ToList();
                foreach (var item in banklist)
                {
                    ReadyApplyStatisticsViewModel model = new ReadyApplyStatisticsViewModel();
                    model.BankName = item.BankName;
                    var ReadyApplyQuery = db.N_LoanReadyApply.Where(a => a.BankId == item.BankId && a.CreateDate > searchmodel.ReadyApplyStartTime && a.CreateDate < searchmodel.ReadyApplyEndTime).AsQueryable();
                    var ApplyQuery = db.N_LoanApply.Where(b => b.BankId == item.BankId && b.ApplyTime>searchmodel.ApplyStartTime && b.ApplyTime<searchmodel.ApplyEndTime).AsQueryable();
                    if(searchmodel.BusinessType!=10)
                    {
                        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 = new ReadyApplyStatisticsViewModel();
                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);
                return list;
            }
            #endregion
  • 相关阅读:
    http数据返回值
    刷新 返回
    微信平台上遇到的bug
    iscroll修改
    iscroll
    a标签的herf和click事件
    ios9+xcode7 适配笔记
    xsd、wsdl生成C#类的命令行工具使用方法
    xcode更新,想想也是醉了
    关于#define预处理指令的一个问题
  • 原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/12874813.html
Copyright © 2020-2023  润新知