由于业务要求,需要添加查询,而查询的时间格式为“2018-05-13”;数据库的时间格式为“2018-05-10 17:32:31”
var entity = context.Infomations.OfType<Docments>().Where(f => (!param.TypeId.HasValue || f.TypeId == param.TypeId) //Docments模型继承于Infomations && (string.IsNullOrEmpty(param.Title) || f.Title.Contains(param.Title)) && (!param.Level.HasValue || f.Level == param.Level) && (!param.IsValid.HasValue || f.IsPublish == param.IsValid) && (!param.BeginTime.HasValue || f.CreateTime >= param.BeginTime) && (!param.EndTime.HasValue || f.CreateTime <= param.EndTime)).OrderByDescending(f =>f.CreateTime).ToList();
这里存在一个问题,就是当开始时间和结束时间选择同一天时,筛选不出来。如选择2018-05-08,这时开始时间和结束时间均为“2018-05-08 00:00:00”,这只能取出创建时间为“2018-05-08 00:00:00”的数据,而不是这一天的数据;
方案一:在进行筛选值钱给结束时间加上一天
param.EndTime = param.EndTime.Value.AddDays(1);
时间范围变成:“2018-05-08 00:00:00”----“2018-05-09 00:00:00”
方案二:将开始时间和结束时间进行字符串拼接成(“2018-05-08 00:00:00”----“2018-05-09 23:59:59”),再转为时间类型进行比较
string startTimeStr = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"; DateTime startTime = DateTime.Parse(startTimeStr); string endTimeStr = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"; DateTime endTime = DateTime.Parse(endTimeStr); Console.WriteLine(startTime); Console.WriteLine(endTime);