私は日付から始まるデータを持っており01/02/2011
、毎日更新されます。
日付から始まる週を使用してデータをフォーマットしたい01/02/2011
。
私は実体を持っています
public DateTime? MeasurementDate { get; set; }
日付の形式:2011-02-01 00:00:00.0000000
これは私にデータベースからの日付を与えます..
linq BY Weekでデータをグループ化したいですか?
手伝って頂けますか?
Linq-To-Entitiesを使用している場合は、次のことができます。
source.GroupBy(x => SqlFunctions.DatePart("ww", x.MeasurementDate));
クラスのGetWeekOfYear
メソッドを使用するCalendar
var dt = new List<DateTime?> { /*...*/ };
var dfi = DateTimeFormatInfo.CurrentInfo;
var ordered = dt
.Where(x => x.HasValue)
.OrderBy(x => dfi.Calendar.GetWeekOfYear(x.Value, CalendarWeekRule.FirstDay, DayOfWeek.Monday));
または、週の最初の日の日付を取得して、その日付でグループ化することもできます。
週の最初の日の日付を取得します。このコードを使用できます:
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
{
int diff = dt.DayOfWeek - startOfWeek;
if (diff < 0)
{
diff += 7;
}
return dt.AddDays(-1 * diff).Date;
}
}
次に、次のように週の最初の日付でグループ化できます。
source.GroupBy(i => i.MeasurementDate.StartOfWeek(DayOfWeek.Monday));