C# 查询日期范围
我想知道如何在本例中继续进行查询: 我有一个用户表,其中包含UserID、UserName、DateRegistered和角色。 我想通过选择两个组合框进行查询,每个组合都有: -期间注册用户(当月、上月、当前15天、最近15天、今年和去年) -角色(不同的角色) 我想在网格中显示引用所选C# 查询日期范围,c#,asp.net,.net,linq,entity-framework,C#,Asp.net,.net,Linq,Entity Framework,我想知道如何在本例中继续进行查询: 我有一个用户表,其中包含UserID、UserName、DateRegistered和角色。 我想通过选择两个组合框进行查询,每个组合都有: -期间注册用户(当月、上月、当前15天、最近15天、今年和去年) -角色(不同的角色) 我想在网格中显示引用所选组合框项的结果查询。 例如:在过去15天内向状态管理员注册的用户 我知道怎么做,但我想做一些一般性的事情,而不是根据时间段做那么多的查询。 我使用EntityFramework 这不是代码,只是我想它应该是的一
组合框
项的结果查询。
例如:在过去15天内向状态管理员注册的用户
我知道怎么做,但我想做一些一般性的事情,而不是根据时间段做那么多的查询。
我使用EntityFramework
这不是代码,只是我想它应该是的一个例子,因为我不知道转换周期和如何比较,如果不是当前的最后15天
string period = dropDownList.SelectedValue.ToString();
DateTime StarPeriode= new DateTime();
switch (option.ToUpper())
{
case "0":
// CURRENT 15 days
StarPeriode = DateTime.Now.Subtract(-15);
break;
case "1":
// LAST 15 days
StarPeriode = DateTime.Now.Subtract(-30);
break;
case "2":
// CURRENT MONTH
break;
case "3":
// LAST MONTH
break;
case "4":
// CURRENT YEAR
break;
case "5":
// LAST YEAR
break;
default:
break;
}
var _db = new Project.Models.UserContext();
IQueryable<User> query = _db.User.GetUser;
query = query.Where(p => p.User.RegisterDate <= StarPeriode || p.User.RegisterDate>DateTime.Now);
string period=dropDownList.SelectedValue.ToString();
DateTime StarPeriode=新的日期时间();
开关(option.ToUpper())
{
案例“0”:
//当前15天
StarPeriode=DateTime.Now.Subtract(-15);
打破
案例“1”:
//过去15天
StarPeriode=DateTime.Now.Subtract(-30);
打破
案例“2”:
//当月
打破
案例“3”:
//上个月
打破
案例“4”:
//本年度
打破
案例“5”:
//去年
打破
违约:
打破
}
var_db=new Project.Models.UserContext();
IQueryable query=\u db.User.GetUser;
query=query.Where(p=>p.User.RegisterDate DateTime.Now);
只需在每种情况下设置startDate和endDate变量,然后在LINQ
语句中使用相同的where子句
var startDate = DateTime.Today;
var endDate = DateTime.Today;
var now = DateTime.Today;
switch (option.ToUpper())
{
case "0":
// CURRENT 15 days
startDate = now.AddDays(-15);
endDate = now;
break;
case "1":
// LAST 30 days
startDate = now.AddDays(-30);
endDate = now;
break;
case "2":
// CURRENT MONTH
startDate = new DateTime(now.Year, now.Month, 1);
endDate = new DateTime(now.Year, now.Month, DateTime.DaysInMonth(now.Year, now.Month));
break;
case "3":
// LAST MONTH
var lastMonth = now.AddMonths(-1);
startDate = new DateTime(lastMonth.Year, lastMonth.Month, 1);
endDate = new DateTime(lastMonth.Year, lastMonth.Month, DateTime.DaysInMonth(lastMonth.Year, lastMonth.Month));
break;
case "4":
// CURRENT YEAR
startDate = new DateTime(now.Year, 1, 1);
endDate = new DateTime(now.Year, 12, 31);
break;
case "5":
// LAST YEAR
var lastYear = now.AddYears(-1);
startDate = new DateTime(lastYear.Year, 1, 1);
endDate = new DateTime(lastYear.Year, 12, 31);
break;
default:
break;
}
var users = Users.Where(u => u.RegisterDate >= startDate && u.RegisterDate <= endDate);
var startDate=DateTime.Today;
var endDate=DateTime.Today;
var now=DateTime.Today;
开关(option.ToUpper())
{
案例“0”:
//当前15天
startDate=now.AddDays(-15);
endDate=现在;
打破
案例“1”:
//过去30天
startDate=now.AddDays(-30);
endDate=现在;
打破
案例“2”:
//当月
startDate=新日期时间(现在.年,现在.月,1);
endDate=新的日期时间(now.Year,now.Month,DateTime.DaysInMonth(now.Year,now.Month));
打破
案例“3”:
//上个月
var lastmount=now.AddMonths(-1);
startDate=新日期时间(lastMonth.Year,lastMonth.Month,1);
endDate=新的日期时间(lastMonth.Year,lastMonth.Month,DateTime.DaysInMonth(lastMonth.Year,lastMonth.Month));
打破
案例“4”:
//本年度
startDate=新的日期时间(now.Year,1,1);
endDate=新的日期时间(now.Year,12,31);
打破
案例“5”:
//去年
var lastYear=now.AddYears(-1);
startDate=新日期时间(lastYear.Year,1,1);
endDate=新的日期时间(lastYear.Year,12,31);
打破
违约:
打破
}
var users=users.Where(u=>u.RegisterDate>=startDate&&u.RegisterDate)首先显示您迄今为止所做的一些代码。谢谢您的提示。所有这些过滤器类别都可以重新格式化为开始和结束日期。我认为角色必须使用不同的表(只是一个建议)用户表只是一个例子。我只是对如何使用句点构建linq查询有一些疑问,因为它可以是当前15天、之前15天、当前月、上个月、当前年和去年。是的,你是对的!!!谢谢!如果我想检查当前季度和上个季度呢???对于当前季度startDate=new DateTime(now.Year,((now.Month-1)/3)*3)+1,1;endDate=startDate.AddMonths(3).AddDays(-1);上一季度的startDate将仅为本季度的startDate减去3个月,并且endDate将是相同的公式。请记住,如果您发现一个答案有用,请将其向上投票或将其标记为答案。