【发布时间】:2013-10-18 14:19:21
【问题描述】:
我有这些数据,我必须按价格分组,并检查数据的范围和连续性
date price
2014-01-01 10
2014-01-02 10
2014-01-03 10
2014-01-05 20
2014-01-07 30
2014-01-08 40
2014-01-09 50
2014-01-10 30
输出应该是这样的
2014-01-01 2014-01-03 10
2014-01-05 2014-01-05 20
2014-01-07 2014-01-07 30
2014-01-08 2014-01-08 40
2014-01-09 2014-01-09 50
2014-01-10 2014-01-10 30
我试过了
var result = list
.OrderBy(a => a.Date)
.GroupBy(a => a.Price)
.Select(x => new
{
DateMax = x.Max(a => a.Date),
DateMin = x.Min(a => a.Date),
Count = x.Count()
})
.ToList()
.Where(a => a.DateMax.Subtract(a.DateMin).Days == a.Count)
.ToList();
我不确定这是否会处理连续日期。所有日期都是独一无二的!
【问题讨论】:
-
因此,如果价格在一天和两天后发生变化,它又是旧的,因为两个日期之间的价格不同,您希望以相同的价格获得两组?
-
我不确定这是否会处理连续日期。所有日期都是独一无二的。这是什么意思?
-
您可以删除
OrderBy和第一个ToList而无需更改任何功能。 -
为什么
ToList()两次?我不确定a.DateMax.Subtract(a.DateMin).Days == a.Count -
Combining consecutive dates into ranges 的完全相同的副本。几个小时前问过!