你可以尝试做这样的事情:
private static void Main(string[] args)
{
var columns = new List<Column>();
var dateRanges = new List<DateRange>()
{
new DateRange(new DateTime(2013, 09, 03), new DateTime(2014, 09, 03))
};
var result = columns.GroupBy(
column => dateRanges.FirstOrDefault(dr => dr.IsInRange(column.Date)),
(dr, drc) => new KeyValuePair<DateRange, int>(dr, drc.Sum(v => v.Value)));
}
public struct DateRange
{
public DateRange(DateTime from, DateTime to)
: this()
{
From = from;
To = to;
}
public bool IsInRange(DateTime date)
{
return date >= From && date <= To;
}
public DateTime From { get; private set; }
public DateTime To { get; private set; }
}
public class Column
{
public int Value { get; set; }
public DateTime Date { get; set; }
}
'.GroupBy'有一些关键字,例如'arg => arg.MyDateTime.Year' ??你试过什么了?你的班级布局是什么? – 2014-09-03 11:35:05
你能展示一些代码吗?您的'日期'列字符串或日期时间中的值? – sr28 2014-09-03 11:39:55
如果您将月份的整数除以8并将其添加到年份,则会为每个组分配一个唯一的密钥。 – 2014-09-03 11:47:16