Mam listę ciągów zawierających "Others"
. Otrzymuję tę listę do rozwijania. Sortuję tę listę alfabetycznie. Ale potrzebuję "Others"
zawsze na końcu listy. Nie chcę dodawać tego elementu po sortowaniu, co jest jednym z rozwiązań. Czy jest jakikolwiek inny sposób, aby zrobić to samo jak przy użyciu niestandardowego porównywalnika metody .Sort()
. Próbowałem jak poniżej, ale bez rozwiązania.Sortowanie listy i zachowanie określonego elementu na końcu listy po sortowaniu
public class EOComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x == null)
{
if (y == null)
{
// If x is null and y is null, they're
// equal.
return 0;
}
else
{
// If x is null and y is not null, y
// is greater.
return -1;
}
}
else
{
// If x is not null...
//
if (y == null)
// ...and y is null, x is greater.
{
return 1;
}
else
{
if (x.ToLower().Contains("other"))
{
return -1;
}
else
{
// If the strings are of equal length,
// sort them with ordinary string comparison.
//
return x.CompareTo(y);
}
}
}
}
i nazywając ją jako:
EOComparer c = new EOComparer();
a.Sort((x, y) => c.Compare(x.OptionValue, y.OptionValue));
return a;
Proszę o pomoc, jeśli jest to możliwe.
dodaj "jeśli y zawiera" inny "powrót 1" też – user489872
Dlaczego nie używać słownika? Umieść "Inne" jako klucz i posortowaną listę jako wartość –