Wenn ich eine Liste von Zahlen habe:
1,2,3,4,5,6,7,8
und ich möchte nach einer bestimmten Nummer bestellen und dann den Rest zeigen. Wenn ich zum Beispiel '3' wähle, sollte die Liste sein:
3,1,2,4,5,6,7,8
Auf der Suche nach linq und c #. Vielen Dank
OrderByDescending
zuOrderBy
oderi == 3
zui != 3
myDataList.OrderByDescending(i => i.StringColumnValue[0] == filterStringValue[0]).ToList()
. Ich habe deine Logik hier verwendet. Basierend auf dem Filterstartbuchstaben werden diese Ergebnisse in der Reihenfolge mit demselbenVielleicht so etwas:
List<int> ls=new List<int>{1,2,3,4,5,6,7,8}; int nbr=3; var result= ls.OrderBy (l =>(l==nbr?int.MinValue:l));
quelle
Einige Antworten sortieren bereits die letzten Zahlen (was möglicherweise richtig ist, da Sie nur eine bereits sortierte Liste anzeigen). Wenn Sie möchten, dass die "nicht ausgewählten" Nummern in ihrer ursprünglichen, nicht unbedingt sortierten Reihenfolge angezeigt werden , können Sie dies stattdessen tun.
int num = 3; var result = list.Where(x => x == num).Concat(list.Where(x => x != num));
Wie @DuaneTheriot hervorhebt, führt die Erweiterungsmethode OrderBy von IEnumerable eine stabile Sortierung durch und ändert die Reihenfolge der Elemente mit gleichem Schlüssel nicht. Mit anderen Worten;
var result = list.OrderBy(x => x != 3);
funktioniert genauso gut, um zuerst 3 zu sortieren und die Reihenfolge aller anderen Elemente beizubehalten.
quelle
list.OrderBy(i => i != 3)
.public static IEnumerable<T> TakeAndOrder<T>(this IEnumerable<T> items, Func<T, bool> f) { foreach ( var item in items.Where(f)) yield return item; foreach (var item in items.Where(i=>!f(i)).OrderBy(i=>i)) yield return item; } var items = new [] {1, 4, 2, 5, 3}; items.TakeAndOrder(i=> i == 4);
quelle