Вы можете создать новый список, который сортируется, написав класс, который реализует IComparer<object>
, и передает его методу LINQ OrderBy
. Как это:
SortedList theList = new SortedList();
// I assume you populate it here
// Then, to sort:
var sortedByValue = theList.Cast<object>().OrderBy(a => a, new ListComparer()).ToList();
Это сортирует элементы и создать новый List<object>
называется sortedByValue
. ListComparer
показан ниже.
Принимая во внимание, что это отвечает на ваш вопрос, я сомневаюсь, что это то, чего вы действительно хотите. Но я не знаю достаточно о вашем приложении, как вы используете SortedList
и что вы хотите сделать с приведенным выше результатом, чтобы дать какое-либо предложение сделать это по-другому. Я сильно подозреваю, что вам нужно переосмыслить свой дизайн, потому что то, что вы здесь делаете, довольно необычно.
Вот ListComparer
.
public class ListComparer: IComparer<object>
{
public int Compare(object x, object y)
{
if (x == null && y == null)
{
return 0;
}
if (x == null)
{
return -1;
}
if (y == null)
{
return 1;
}
if (x is Class1)
{
if (y is Class1)
{
return (x as Class1).Prop1.CompareTo((y as Class1).Prop1);
}
// Assume that all Class1 sort before Class2
return 1;
}
if (x is Class2)
{
if (y is Class2)
{
return (x as Class2).Prop3.CompareTo((y as Class2).Prop3);
}
if (y is Class1)
{
// Class1 sorts before Class2
return -1;
}
// y is not Class1 or Class2. So sort it last.
return 1;
}
// x is neither Class1 nor Class2
if ((y is Class1) || (y is Class2))
{
return -1;
}
// Don't know how to compare anything but Class1 and Class2
return 0;
}
}
'SortedList' использует пары ключ/значение. Список сортируется по ключу, а не по значению. Вы хотите сказать, что хотите сортировать значения? Покажите нам некоторый код, который иллюстрирует, как вы заполняете коллекцию. –
@JimMischel: да по умолчанию список будет отсортирован по key..but, я хочу сортировать их по значениям. Спасибо за вашу помощь..и удалось переместить все значения и перестроить их, и я мог сортировать. я скоро опубликую свой рабочий код, поскольку у меня его нет прямо сейчас со мной.thanks снова –
Возможный дубликат [Сортированный список C# по значению с объектом] (http://stackoverflow.com/questions/16649481/c-sharp-sorted -list-by-value-with-object) – nawfal