根据日期筛选数据

在通过条件筛选数据之前需要查询先查询出所有的数据,然后才能够根据条件来查询出符合条件的数据。
var Linqss = (from tbFrom in myModels.PW_Receipts
where tbFrom.ReceiptsNum == ReceiptsNums
select tbFrom).ToList();
然后就是在页面中传所需要筛选的条件的到控制器当中,这里我在页面中传过来的是数字,分别代表了所需要筛选的条件:
1-显示当天的数据; 2-显示昨天的数据; 3-显示当月的数据; 4-显示上月的数据;
5-显示当年的数据; 6-显示上年的数据; 7-显示全部的数据;

在控制器当中接收到从页面传过来的参数之后就开始判断传过来的参数是什么,在根据这个参数所代表的意义来进行相对应的条件筛选。

如果参数为1:
if (Date == 1){
DataTime = DateTime.Now.ToString(“yyyy-MM-dd”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy-MM-dd”) == DataTime).ToList();}
DataTime先获取到今天的时间,再转换为字符串的形式,以(“yyyy-MM-dd”)的形式输出;然后就是进行筛选,先把上面查询出来的数据的某个字段的值转换为时间的类型,再转换为字符串的类型以(“yyyy-MM-dd”)的形式输出,判断是否等于上面的DataTime,这样就可以实现出日期为今天的数据了!

参数为2:
else if (Date == 2){昨天
DataTime = DateTime.Now.AddDays(-1).ToString(“yyyy-MM-dd”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy-MM-dd”) == DataTime).ToList();
明天:DataTime = DateTime.Now.AddDays(1).ToString(“yyyy-MM-dd”); }
获取到昨天的日期等于获取到今天的日期再减去1:(DataTime = DateTime.Now.AddDays(-1).ToString(“yyyy-MM-dd”));明天的日期等于今天的日期加1:(DataTime = DateTime.Now.AddDays(1).ToString(“yyyy-MM-dd”))。同上,然后就根据日期从所有数据当中去筛选符合条件的数据。

参数为3:
else if (Date == 3){
var Time = DateTime.Now.Year.ToString() + ‘-’ + ‘0’ + DateTime.Now.Month.ToString() + ‘-’ + ‘0’ + “1”;
DataTime = DateTime.Parse(Time).AddMonths(1).AddDays(-1).ToString(“yyyy-MM”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy-MM”) == DataTime).ToList(); }
首先先获取到今年的年份Time,再获取到下个月份的第一天,再减去一天,就相当于获取到了这个月份的第一天,间接性到获取到了这个月的月份,再转换为字符串形式以(“yyyy-MM”)的形式输出。然后就根据日期从所有数据当中去筛选符合条件的数据,再查询之前要把字段的值转换为与上面的输出的日期值相同的格式。

参数为4:
else if (Date == 4){
DataTime = DateTime.Parse(DateTime.Now.ToString(“yyyy-MM-01”)).AddDays(-1).ToString(“yyyy-MM”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy-MM”) == DataTime).ToList(); }
获取到当前的时间,再转换为年月日的形式,日设置为01=也就是这个月份的第一天:(“yyyy-MM-01”),再减去一天就可以获取到上一个月份的最后一天了,再转换为(yyyy-MM)的形式输出;下个月的就是获取到当前月份的第一天,然后再加上两个月,再减去一天的时间,就可以获取到下个月最后一天的时间了(DataTime=DateTime.Parse(DateTime.Now.ToString(“yyyy-MM-01”)).AddMonths(2).AddDays(-1).ToShortDateString()?。然后就是根据日期从所有数据当中去筛选符合条件的数据。

参数为5:
else if (Date == 5){
DataTime = DateTime.Parse(DateTime.Now.ToString(“yyyy-01-01”)).AddYears(1).AddDays(-1).ToString(“yyyy”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy”) == DataTime).ToList(); }
获取到今年的第一个月和第一个月的第一天,再加上一年,再减去一天,就获取到了今年的最后一个月的最后的最后一天了,再转换为年(“yyyy”)的形式输出,再根据日期从所有数据当中去筛选符合条件的数据。

参数为6:
else if (Date == 6){
DataTime = DateTime.Parse(DateTime.Now.ToString(“yyyy-01-01”)).AddDays(-1).ToString(“yyyy”);
Linqss = Linqss.Where(S => Convert.ToDateTime(S.ReceiptsDate).ToString(“yyyy”) == DataTime).ToList(); }
获取到今年的第一个月和第一个月的第一天,再减去一天,就获取到了上一年的最后一个月的最后的最后一天了;明天的就是–获取到今年的第一个月和第一个月的第一天,加上两年,再减去一天,就获取到了明年的最后一个月的最后的最后一天了(DataTime = DateTime.Parse(DateTime.Now.ToString(“yyyy-01-01”)).AddYears(2).AddDays(-1).ToString(“yyyy”)),再根据日期从所有数据当中去筛选符合条件的数据。

参数为7查询全部数据,不需要进行筛选。

你可能感兴趣的:(C#)