【发布时间】:2011-04-01 22:05:24
【问题描述】:
我遇到了 LINQ 的问题。
这是代码,
public class TimeObject
{
public DateTime Time { get; set; }
}
private void TestLINQ()
{
List<TimeObject> results = new List<TimeObject>();
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 0, 10, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 0, 20, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 0, 30, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 0, 40, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 0, 50, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 1, 10, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 1, 20, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 1, 30, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 1, 40, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 2, 15, 0)});
results.Add(new TimeObject() { Time = new DateTime(2010, 8, 1, 2, 30, 0)});
var counts = from result in results
group result by result.Time.Date.Hour into groupedResult
select new { Hour = groupedResult.Key, Count = groupedResult.Count() };
foreach (var count in counts)
{
MessageBox.Show(count.Hour + " - " + count.Count);
}
}
我期望的输出是 0 - 5, 1 - 4, 2 - 2
但我总是得到 0 - 12。为什么不按小时分组?
请帮助我。谢谢。
【问题讨论】: