Benutzer mit den meisten Antworten
Zählen von Elementen die mehrfach auftreten in einer Liste.

Frage
-
Guten Tag,
ich schreibe ein Programm das zahlen auswertet und in einer Liste speichert. die zahlen gehen nur von 0 bis 180, aber ich habe über 250000 davon. ich möchte nun das Vorkommen von jeder einzelnen Zahl wissen...
also z.B.
eine Liste mit 10 Zahlen
1;1;1;2;2;3;3;4;5;5;Ergebnis:
1: 3 mal
2: 2 mal
3: 2 mal
4: 1 mal
5: 2 malvielen Dank
LG Lucas
Antworten
-
Hallo Lucas,
mit Linq geht es etwas anders.
List<int> values = new List<int>() { 1, 1, 1, 2, 2, 3, 3, 3, 3 }; var counts = from n in values group n by n into r select new { Value = r.Key, NumberOfItems = r.Count() };
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Florian Haupt Dienstag, 6. März 2018 13:16
- Als Antwort markiert Stefan FalzModerator Donnerstag, 15. März 2018 11:54
-
Hallo Lucas,
so könnte es gehen
void NumberCounter() { Dictionary<int, int> dict = new Dictionary<int, int>(); var num = new int[] { 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6 }; foreach (var item in num) { if (dict.ContainsKey(item)) { dict[item]++; } else { dict.Add(item, 1); } } }
Auch eine Linq abfrage wäre möglich. Aber wenn Du den oberen Code direct bei der Analyse verwendest, sparst Du dir etwas Rechnerzeit
Edit:
ein einfaches Array wäre natürlich auch möglich. Würde das ganze aber etwas komplizierter machen
Gruß Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
Dev Apps von mir: Icon für UWP, UI Strings
Andere Dev Apps: UWP Community Toolkit Sample App- Bearbeitet Thomas Wycichowski Dienstag, 6. März 2018 10:36
- Als Antwort vorgeschlagen Florian Haupt Dienstag, 6. März 2018 13:15
- Als Antwort markiert Stefan FalzModerator Donnerstag, 15. März 2018 11:54
Alle Antworten
-
Hallo Lucas,
so könnte es gehen
void NumberCounter() { Dictionary<int, int> dict = new Dictionary<int, int>(); var num = new int[] { 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6 }; foreach (var item in num) { if (dict.ContainsKey(item)) { dict[item]++; } else { dict.Add(item, 1); } } }
Auch eine Linq abfrage wäre möglich. Aber wenn Du den oberen Code direct bei der Analyse verwendest, sparst Du dir etwas Rechnerzeit
Edit:
ein einfaches Array wäre natürlich auch möglich. Würde das ganze aber etwas komplizierter machen
Gruß Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
Dev Apps von mir: Icon für UWP, UI Strings
Andere Dev Apps: UWP Community Toolkit Sample App- Bearbeitet Thomas Wycichowski Dienstag, 6. März 2018 10:36
- Als Antwort vorgeschlagen Florian Haupt Dienstag, 6. März 2018 13:15
- Als Antwort markiert Stefan FalzModerator Donnerstag, 15. März 2018 11:54
-
Hallo Lucas,
mit Linq geht es etwas anders.
List<int> values = new List<int>() { 1, 1, 1, 2, 2, 3, 3, 3, 3 }; var counts = from n in values group n by n into r select new { Value = r.Key, NumberOfItems = r.Count() };
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Florian Haupt Dienstag, 6. März 2018 13:16
- Als Antwort markiert Stefan FalzModerator Donnerstag, 15. März 2018 11:54