フィールドを持つユーザーテーブルがありuserdateregistered
、現在の月、先月、現在の四半期、前の四半期、今年、昨年に登録されたユーザーを表示したい (日付参照は datetime.now です)。linq クエリを作成する必要があります。
例えば:
2013/12/31 12月(12)の場合
2012/01/15 第1四半期の場合 (1)
2013/05/12 2012年なら
フィールドを持つユーザーテーブルがありuserdateregistered
、現在の月、先月、現在の四半期、前の四半期、今年、昨年に登録されたユーザーを表示したい (日付参照は datetime.now です)。linq クエリを作成する必要があります。
例えば:
2013/12/31 12月(12)の場合
2012/01/15 第1四半期の場合 (1)
2013/05/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;
日付によるフィルタリングのアイデアを示しています。適切な開始日と終了日を計算するだけです。EntityFunctions.TruncateTimeメソッドを使用して、日付のみを比較します。
DateRange
実際には、開始日と終了日を保持し、いくつかの範囲を作成するためのクラスを作成しました。
public class DateRange
{
public DateTime BeginDate { get; set; }
public DateTime EndDate { get; set; }
public static DateRange OfYear(int year)
{
return new DateRange
{
BeginDate = new DateTime(year, 1, 1),
EndDate = new DateTime(year, 12, 31)
};
}
public static DateRange OfMonth(int month)
{
var year = DateTime.Today.Year;
return new DateRange
{
BeginDate = new DateTime(year, month, 1),
EndDate = new DateTime(year, month, 1).AddMonths(1).AddDays(-1)
};
}
}
これにより、フィルター範囲を簡単に作成できます。
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;