Независимо от размера списка, если вы ориентируетесь на .NET 3.5, я бы пошел с LINQ, если только для удобства чтения.
Я большой поклонник написания того, что вы имеете в виду, а не того, как это делается, и LINQ делает это очень легко в таких случаях.
Вы, возможно, даже можете объединить вычисления в один оператор LINQ, сгруппированный по типу. Таким образом, у вас не будет двух циклов для LINQ, а будет только один, как во втором примере:
var subtotals = from x in exampleList
group x by x.Type into g
select new { Type = x.Key, SubTotal = g.Sum(x => x.Total) };
(Не совсем уверен, работает ли код как есть, это просто быстрая адаптация к одному из 101 примеров LINQ . Синтаксис должен быть в порядке.) *