编辑:我错过了一个关键点:.NET 2.0
考虑一下我有一个未排序项目列表的情况,为了简单起见,如下所示:
class TestClass
{
DateTime SomeTime;
decimal SomePrice;
// constructor
}
我需要创建一个类似报告的输出,其中累积了每天的总价格。每个项目应该有一行,后面是适当的摘要行。
拿这个测试数据:
List<TestClass> testList = new List<TestClass> {
new TestClass(new DateTime(2008,01,01), 12),
new TestClass(new DateTime(2007,01,01), 20),
new TestClass(new DateTime(2008,01,01), 18)
};
所需的输出将是这样的:
2007-01-01:
20
Total: 20
2008-01-01:
12
18
Total: 30
处理这种情况的最佳方法是什么?对于这样的列表,我将为 TestClass 实现 IComparable 接口,以便可以对列表进行排序。
要创建报告本身,可以使用类似的东西(假设我们有方法来完成诸如累积价格、跟踪当前日期等任务):
for (int i=0;i<testList.Count;i++)
{
if (IsNewDate(testList[i]))
{
CreateSummaryLine();
ResetValuesForNewDate();
}
AddValues(testList[i]);
}
// a final summary line is needed to include the data for the last couple of items.
CreateSummaryLine();
这行得通,但就第二个“CreateSummaryLines”而言,我有一种奇怪的感觉。
您以什么方式处理这种情况(特别是考虑到这样一个事实,我们需要使用 List<> 项目而不是预先分类的 Dictionary 或类似的东西)?