Feedback

C# - Nach Häufigkeit sortieren

Veröffentlicht von am 16.11.2015
(0 Bewertungen)
Mit dieser Funktion kann man die Elemente in einem IEnumerable nach der Häufigkeit sortieren.
source ist die zu sortierende Quelle
descending gibt an ob absteigend sortiert werden soll (true = absteigend, false = aufsteigend)
comparer gibt an, wie die Elemente verglichen werden sollen.

Beispiel: Es wird absteigend mit dem Standardvergleich sortiert
List<int> TestZahlen = new List<int>() { 1, 2, 3, 4, 1, 2, 1, 3, 3, 1 };

Ausgabe:
1, 3, 2, 4
GFU-Schulungen  [Anzeige]

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

public static IEnumerable<T> SortByFrequenzy<T>(IEnumerable<T> source, bool descending = true)
        {
            Dictionary<T, int> counter = new Dictionary<T, int>();
            foreach (T item in source)
            {
                if (counter.ContainsKey(item))
                { continue; }
                else
                { counter.Add(item, source.Count(x => x.Equals(item))); }
            }
            var ordered = descending ? counter.OrderByDescending(x => x.Value) : counter.OrderBy(x => x.Value);
            foreach (var item in ordered)
            {
                yield return item.Key;
            }
        }

        public static IEnumerable<T> SortByFrequenzy<T>(IEnumerable<T> source, IEqualityComparer<T> comparer, bool descending = true)
        {
            Dictionary<T, int> counter = new Dictionary<T, int>(comparer);
            foreach (T item in source)
            {
                if (counter.ContainsKey(item))
                { continue; }
                else
                { counter.Add(item, source.Count(x => x.Equals(item))); }
            }
            var ordered = descending ? counter.OrderByDescending(x => x.Value) : counter.OrderBy(x => x.Value);
            foreach (var item in ordered)
            {
                yield return item.Key;
            }
        }
Abgelegt unter Sortieren, Häufigkeit.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!