So wie es aussieht, stimmt bei gleichem Artikel auch immer die komplette Zeile überein?
Denn dann könntest du einfach ein Dictionary benutzen, indem du immer das erste Vorkommen einer Zeile speicherst, mit einer Anfangs Value von 1, falls nicht schon vorhanden. Ansonsten erhöhst du die Value.
Das sähe dann etwa so aus:
Code
Dicitionary<string, int> d = new Dicitionary<string, int>();
...
while (sr.Peek() >= 0)
{
string s = sr.ReadLine();
if(!d.containsKey(s))
d.Add(s, 1);
else
d[s]++;
}
Alles anzeigen
Am Ende dann nur noch die entsprechende Ausgabe. Das könnte man bspw. mit einer foreach Schleife machen:
Edit: Mir ist grad aufgefallen, dass du die Preise auch summiert haben willst. Das wäre in dem Code jetzt noch nicht berücksichtigt.