从日期列表中过滤一周

时间:2012-12-27 11:56:04

标签: c# .net

我有一个日期列表,如何从中选择一周?

假设这是日期列表:

02/11/2012
11/25/2012
04/08/2012
12/03/2012
04/13/2012
04/11/2012
12/12/2012
01/25/2012
04/10/2012
04/12/2012
04/09/2012
05/23/2012
10/05/2012
01/25/2012
04/14/2012

提取的周应该是这样的:

04/08/2012
04/09/2012
04/10/2012
04/11/2012
04/12/2012
04/13/2012
04/14/2012

修改

我在数据库中有一个包含日期的表,我需要在获取所有记录时根据这些日期过滤数据并在几周内查看它们。

2 个答案:

答案 0 :(得分:2)

如果我理解你想要以某种方式将列表中的日期分组,则同一周的日期将在同一组中。我认为应该这样做:

var dates = (..) // your list of dates

var dtf = DateTimeFormatInfo.CurrentInfo;

var groupedDates = dates.GroupBy(d => dtf.Calendar.GetWeekOfYear(d, dtf.CalendarWeekRule, dtf.FirstDayOfWeek));

之后,您将能够选择所选周的日期:

var myWeekDates = groupedDates.SingleOrDefault(g => g.Key == myWeekNr);

或简单地遍历所有群组:

foreach(var g in groupedDates)
{
    // (...)
    // g.Key is #nr of the week
    // g is IEnumerable<DateTime> with dates within that week
}

答案 1 :(得分:0)

您是如何从数据库中选择这些记录的?

也许你可以在SQL中处理它:

SELECT DATEPART(WK, date_column) FROM table;

它返回日期的周数,以便您可以获得该周的第一天或最后一天。