Sortiere eine Liste und behalte ein bestimmtes Element am Ende der Liste nach dem Sortieren

8

Ich habe eine Liste von Strings mit "Others" . Ich bekomme diese Liste für Drop-Down. Ich sortiere diese Liste alphabetisch. Aber ich brauche "Others" immer am Ende der Liste. Ich möchte dieses Element nach dem Sortieren, das eine Lösung ist, nicht hinzufügen. Gibt es eine andere Möglichkeit, dasselbe zu tun, indem Sie den benutzerdefinierten Vergleich von .Sort() method verwenden. Ich habe versucht wie unten, aber keine Lösung.

%Vor%

und nennen es als:

%Vor%

Bitte helfen Sie, wenn es möglich ist.

    
Gerry 17.03.2016, 10:59
quelle

3 Antworten

10

Das ist eine gute Antwort, aber ich dachte, ich würde Ihren Vergleich reparieren:

Test:

%Vor%

Vergleicher:

%Vor%

Beachten Sie, wie meine Verwendung von string.Compare alle == null Checks vermeidet. Und wie StringComparison.OrdinalIgnoreCase vermeidet .ToLower() und vermeidet somit das Erstellen von Kopien der Zeichenfolgen.

    
weston 17.03.2016, 11:30
quelle
15

Verwenden Sie diese Logik

%Vor%

Ausgabe:

  

a b c x y z andere

Wenn other ganz oben auf der Liste stehen soll, mach es

%Vor%

Ausgabe:

  

anderes a b c x y z

    
CarbineCoder 17.03.2016 11:17
quelle
0

Angenommen, wir haben Objekte mit den folgenden Listenelementen.

object.Text="a" object.Value = 1

object.Text="b" object.Value = 2

object.Text="andere" object.Value = 3

object.Text="c" object.Value = 4

das folgende funktioniert für mich:

var oList = objects.OrderBy (i = & gt; i.Text!="andere"). ThenBy (i = & gt; i.Text);

    
Kamrul 09.01.2017 18:39
quelle

Tags und Links