【发布时间】:2011-09-13 23:13:09
【问题描述】:
我有一个 SortedList,其中键为 DateTime,值为 int。 DateTime 值将附加小时和分钟。是否可以编写一个 C# linq 过程来按单个日期对 SortedList 进行分组,而忽略小时并对值求和?
【问题讨论】:
标签: c# linq datetime group-by sum
我有一个 SortedList,其中键为 DateTime,值为 int。 DateTime 值将附加小时和分钟。是否可以编写一个 C# linq 过程来按单个日期对 SortedList 进行分组,而忽略小时并对值求和?
【问题讨论】:
标签: c# linq datetime group-by sum
使用 LINQ 非常简单:
from item in list
group item by item.Key.Date into g
select new
{
Sum = g.Sum(a => a.Value),
Values = g
};
【讨论】:
到一个日期?
简单!
假设您已将变量 singleDate 声明为 DateTime 以获得总和,这里是查询:
var result = (
from key in sortedList.Keys.Cast<DateTime>()
where key.Date == singleDate.Date
select (int)sortedList[key]
).Sum();
我使用singleDate.Date 删除了singleDate 可能拥有的任何时间信息,否则这应该是相当直接的。
SortedList 使用 LINQ 有点痛苦。你能告诉我你为什么使用它吗?
【讨论】: