C# 如何查询linq检查日期是月、季还是年

C# 如何查询linq检查日期是月、季还是年,c#,linq,entity-framework,C#,Linq,Entity Framework,我有一个带有userdateregistered字段的用户表,希望显示在当月、上月、本季度、上季度、本年度和去年注册的用户(日期引用是datetime.now)。我需要构建一个linq查询 例如: 2013/12/31,如果是在12月(12日) 2012/01/15如果是第一季度(1) 2013年5月12日,如果是在2012年。这里是一个选择当月所有用户的查询 DateTime startOfMonth = DateTime.Today.AddDays(1 - DateTime.Today.Da

我有一个带有
userdateregistered
字段的用户表,希望显示在当月、上月、本季度、上季度、本年度和去年注册的用户(日期引用是datetime.now)。我需要构建一个linq查询

例如:

2013/12/31,如果是在12月(12日)

2012/01/15如果是第一季度(1)


2013年5月12日,如果是在2012年。

这里是一个选择当月所有用户的查询

DateTime startOfMonth = DateTime.Today.AddDays(1 - DateTime.Today.Day);
DateTime today = DateTime.Today;

var users =
   from u in context.Users
   where EntityFunctions.TruncateTime(u.UserDateRegistered) >= startOfMonth &&
         EntityFunctions.TruncateTime(u.UserDateRegistered) <= today
   select u;
它将允许您轻松创建过滤器范围:

var range = DateRange.OfMonth(10);
var users =
   from u in context.Users
   where EntityFunctions.TruncateTime(u.UserDateRegistered) >= range.BeginDate &&
         EntityFunctions.TruncateTime(u.UserDateRegistered) <= range.EndDate
   select u;     
var range=DateRange.OfMonth(10);
变量用户=
来自上下文中的u
其中EntityFunctions.TruncateTime(u.UserDateRegistered)>=range.BeginDate&&

TruncateTime(u.UserDateRegistered)您没有提供有关问题的足够信息。所以,答案将是-使用方法
IsInMonth
isinqueter
IsInYear
,以及如何按当前季度和最后季度进行筛选?谢谢,这是个好主意@我认为你应该试着自己完成至少一部分任务。你有足够的信息来做这件事。在DateRange类中创建另一个工厂方法,类似于计算当前季度开始和结束日期的当前季度的
var range = DateRange.OfMonth(10);
var users =
   from u in context.Users
   where EntityFunctions.TruncateTime(u.UserDateRegistered) >= range.BeginDate &&
         EntityFunctions.TruncateTime(u.UserDateRegistered) <= range.EndDate
   select u;