当前位置: 首页 > news >正文

bae如何上传wordpress北京网络推广公司wyhseo

bae如何上传wordpress,北京网络推广公司wyhseo,建设银行郑州市自贸区分行网站,网站 建设在作用是什么意思在日常使用EF框架查询数据库时,有时传入的参数为空,那么我们应该把该条件排除,不应列入组装的sql中,本篇文件以分页查询为例介绍EF框架的单表、多表的多条件查询,参数为空时排除条件。 首先我们要有派生自DBContext类的数据上下文…

在日常使用EF框架查询数据库时,有时传入的参数为空,那么我们应该把该条件排除,不应列入组装的sql中,本篇文件以分页查询为例介绍EF框架的单表、多表的多条件查询,参数为空时排除条件。

首先我们要有派生自DBContext类的数据上下文类,这个类代表数据库连接和数据库模型

public class MyDbContext : DbContext
{public DbSet<人员信息> PersonBasic{ get; set; }public DbSet<考核信息> Assess{ get; set; }
}

两个示例的实体类型

用于映射到数据库表的实体类型。也就是数据库的表和字段

public class 人员信息
{public int Id { get; set; }//idpublic string Name { get; set; }//姓名public string Sex{ get; set; }//性别public string Age{ get; set; }//年龄public string IdNumber{ get; set; }//身份证号   与B表身份证相同  可关联public string State{ get; set; }//状态//...
}
public class 考核信息
{public int Id { get; set; }public string Name { get; set; }public string Sex{ get; set; }public string Age{ get; set; }public string IdNumber{ get; set; }//身份证号[Column(TypeName = "date")]public DateTime? Time{ get; set; }//考核时间public string OrganCode{ get; set; }//机构编号//...
}

入参实体

public class InputDto{public string SearchText{get;set;}//一个参数可查询多个条件public string Sex{get;set;}public string StartTime{get;set;}public string EndTime{get;set;}public string OrganCode{get;set;}public string State{get;set;}public string Number{get;set;}public int PageIndex{get;set;}public int PageIndex{get;set;}
}

结果返回实体

public class OutPutDto
{public int Id { get; set; }public string Name { get; set; }public string Sex{ get; set; }public string Age{ get; set; }public string State{ get; set; }//...
}

使用dbcontext上下文类进行查询


namespace Test
{public class AppServiceTest{private readonly MyDbContext _context;public AppServiceTest(MyDbContext context){this._context = context;}/// <summary>/// 获取列表 /// </summary>/// <param name="input"></param>/// <returns></returns>[Route("api/Test/GetList")]public dynamic GetListAsync(InputDto input){return GetEFList(input,_context); }}
}
using (var context = new MyDbContext())
{var entities = context.Entities.ToList();
}/// <summary>/// 原生ef查询/// </summary>/// <param name="input"></param>/// <returns></returns>public PagedResultDto<OutPutDto> GetEFList(InputDto input, MyDbContext _context){//机构信息传来的形式为  37,38,39string[] organ = input.OrganCode?.Split(',');IQueryable<考核信息> query = null;if (string.IsNullOrWhiteSpace(input.State)){DbSet<考核信息> db = _context.考核信息;// 定义查询条件    单表   lambda表达式查询//解释一下改表达式的意思,首先db表示数据库的“考核信息”表//whereif用于判断input实体传来的参数是否为空,如果不为空则拼接该条件//第一个whereif中代表着"姓名"字段开头包含input.SearchText传来的参数,当然也可以使用Contains方法,完整意思为“姓名”包含参数 或 “身份证号”包含参数//whereif.whereif 就代表着一直and//第二个whereif代表,如果传开的参数不为空,那拼接sql  性别=传来的参数   例:sex='男'//第三个whereif,参数不为空时时间大于等于传来的参数,由于数据库是datetime类型所以要转换//第四个whereif 同上//第五个whereif 代表数据库中的in  方法的开始先将OrganCode转换为数组然后organ.Contains(x.OrganCode)使用//最后一个whereif 如果Number大于1  那么根据身份证去重(一个人会有多条数据) 查最大的idquery = db.WhereIf(!string.IsNullOrWhiteSpace(input.SearchText), x => x.姓Name.StartsWith(input.SearchText) || x.IdNumber.StartsWith(input.SearchText)).WhereIf(!string.IsNullOrWhiteSpace(input.Sex), x => x.Sex == input.Sex).WhereIf(!string.IsNullOrWhiteSpace(input.StartTime), x => x.Time >= DateTime.Parse(input.StartTime))//input.StartTime.Adapt<DateTime>().WhereIf(!string.IsNullOrWhiteSpace(input.EndTime), x => x.Time <= DateTime.Parse(input.EndTime)).WhereIf(!string.IsNullOrWhiteSpace(input.OrganCode), x => organ.Contains(x.OrganCode)).WhereIf(input.Number > 0, x => db.GroupBy(y => y.IdNumber).Where(group => group.Count() > input.Number).Select(group => group.Max(y => y.Id)).Contains(x.Id)).OrderByDescending(a=>a.Id);//将以上表达式转换为sql为//select * from 考核信息 where (Name like '王%' or IdNumber like '王%') and   Sex='男' and OrganCode in('37','38') and Id in(select max(Id) from 考核信息 group by IdNumber having count(*)>1) Order By Id Desc//当然如果Number参数为0对应的sql为//select * from 考核信息 where (Name like '王%' or IdNumber like '王%') and   Sex='男' and OrganCode in('37','38') Order By Id Desc}else{DbSet<考核信息> kh = _context.考核信息;DbSet<人员信息> basic = _context.人员信息;//  定义查询   多表   linq查询query = from a in kh join b in basic on a.IdNumber equals b.IdNumberwhere(string.IsNullOrWhiteSpace(input.SearchText) || a.Name.StartsWith(input.SearchText) || a.IdNumber.StartsWith(input.SearchText)) &&(string.IsNullOrWhiteSpace(input.Sex) || a.Sex == input.sex) &&(string.IsNullOrWhiteSpace(input.StartTime) || a.Time >= DateTime.Parse(input.StartTime)) &&(string.IsNullOrWhiteSpace(input.EndTime) || a.Time <= DateTime.Parse(input.EndTime)) &&(string.IsNullOrWhiteSpace(input.State) || b.State == input.State) &&(input.Number <= 0 || (from x in khgroup x by x.IdNumber into gwhere g.Count() > 1select g.Max(x => x.Id)).Contains(a.Id))orderby a.Id descendingselect a;//以上linq表达式对应的sql为//select * from 考核信息 a Inner JOIN 人员信息 b  ON a.IdNumber = b.IdNumber where (a.Name like '王%' or a.IdNumber like '王%') and a.Sex='男' and a.OrganCode in('37', '38') and a.Id in(select max(Id) from 考核信息 group by IdNumber having count(*)>1) Order By a.Id Desc//当然如果number为0时//select * from 考核信息 a Inner JOIN 人员信息 b  ON a.IdNumber = b.IdNumber where (a.Name like '王%' or a.IdNumber like '王%') and a.Sex='男' and a.OrganCode in('37', '38')  Order By a.Id Desc}int count= query.Count();//统计总行数// 分页查询数据var pageIndex = input.PageIndex;var pageSize = input.PageSize;var pageData = query.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();//这里使用了Mapster中间件可以在包控制管理工具中安装   然后using Mapster;//意思是将pageData映射成OutPutDtoList<OutPutDto> aaa = pageData.Adapt<List<OutPutDto>>();return new {items=pageData,total=count};}

end

看完此篇文章后是不是感觉瞬间豁然开朗?

http://www.tj-hxxt.cn/news/74054.html

相关文章:

  • 怎样用dw做 网站首页百度百家号官网登录
  • 沾益最新疫情长沙网站优化价格
  • 东莞网站优化方法中层管理者培训课程有哪些
  • 农产品电子商务网站建设公关团队
  • 智能魔方网站疫情最新数据
  • 网站开发公司网站长沙网站提升排名
  • wordpress能不能做商城手机系统优化
  • 花桥网站建设seo关键词优化价格
  • 重庆做网站价格临沂百度联系方式
  • 中国铁建网站郑州seo外包服务
  • 烟台汽车租赁网站建设适合员工的培训课程
  • 东莞百度快速排名优化seo关键词排名优化案例
  • 龙岗网站建设培训上海职业技能培训机构
  • 西安南郊网站建设鹤壁seo
  • 外贸网站如何传产品东莞网络推广代运营
  • 微网站开发视频教程百度推广是什么
  • 用java做网站怎么加视频20个排版漂亮的网页设计
  • 电脑做系统ppt下载网站好销售策略和营销策略
  • 购物网站 页面设计百度经验首页
  • 做1688网站需要懂英语吗个人seo怎么赚钱
  • 建站公司塔山双喜杭州网络推广网络优化
  • 网站建设 中企动力网站开发流程有哪几个阶段
  • 个性化网站建设开发十大免费引流平台
  • 网站开发+兼职挣钱吗广东知名seo推广多少钱
  • 行业网站大全产品网络推广怎样做
  • 垂直行业门户网站中国时事新闻网
  • 铂爵旅拍婚纱摄影官网石狮seo
  • 大桥外语官方网站星做宝贝青岛神马排名优化
  • 县政府门户网站建设实施方案google搜索排名优化
  • 自己做的网站提示危险济南谷歌推广