0

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

假设这是日期列表:

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

编辑:

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

4

2 回答 2

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
}
于 2012-12-27T12:26:28.097 回答
0

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

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

SELECT DATEPART(WK, date_column) FROM table;

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

于 2012-12-27T12:37:10.157 回答