Feedback

C# - Comparison erstellen

Veröffentlicht von am 20.01.2014
(0 Bewertungen)
Man kann bei den Sortiermethoden von LINQ (Bsp.: OrderBy) zusätzlich einen Comparison angeben. Dieser hat als Vorraussetzung, das er von IComparer<TKey> abgeleitet ist. Man kann sich nun entweder einen eigenen Typ erstellen, welcher diese Schnittstelle implementiert, oder die Statische Create-Methode verwenden.

Dieser Methode muss man eine Methode übergeben, welche die Sortierreihenfolge angibt:
x / y => RÜCKGABE
x vor y => -1
x neben y => 0
x nach y => 1
Natürlich kann diese Methode auch ein Lambdaausdruck sein.

Dieses Snippet demonstriert die Sortierung von Zahlen nach "gerade" bzw. ungerade"

Benötigte Namespaces
System.Collections.Generic
System.Linq (für LINQ-Erweiterungsmethoden, bspws. OrderBy)

Getestete Plattformen
Windows Konsole
Hierbei sollte man annehmen, das es auf alles Plattformen läuft, die LINQ unterstützen. Die statische Create-Methode ist laut MSDN ab .NET 4.5 verfügbar.

MSDN Artikel
Create-Methode
http://msdn.microsoft.com/de-de/library/hh737198.aspx
LINQ-Abfrageausdrücke (C#-Programmierhandbuch)
http://msdn.microsoft.com/de-de/library/bb397676.aspx
IComparable-Schnittstelle
http://msdn.microsoft.com/de-de/library/system.icomparable.aspx
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

int[] nums = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
nums = nums.OrderBy(x => x, Comparer<int>.Create((x, y) =>
{
    if (x % 2 == y % 2)//Beide gerade bzw. ungerade
        return 0;
    if (x % 2 < y % 2)
        return -1;//x is gerade, y nicht
    else
        return 1;//y is gerade, x nicht
})).ToArray();
Abgelegt unter OrderBy, Comparer, Create, Listen, Array, Comparison, LINQ.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!