РЕДАКТИРОВАТЬ: я упустил важный момент: .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
Как лучше всего подходить к таким сценариям? В случае такого списка я бы реализовал интерфейс IComparable для TestClass, чтобы список можно было отсортировать.
Для создания самого отчета можно использовать что-то подобное (предположим, что у нас есть методы для таких задач, как накопление цен, отслеживание текущей даты и т. Д.):
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 <>, а не с предварительно категорированным словарем или чем-то подобным)?