У меня вопрос по сортировке списка по нескольким столбцам. В следующем примере, хотя я отсортировал, чтобы показать None, A First Description, B Second...
, список по-прежнему печатает в том порядке, в котором он был вставлен.Сортировка списка C# несколькими столбцами
List<MySample> samples = new List<MySample>();
samples.Add(new MySample { SortOrder = 1, Data = "A First Description", Description = "A First Description" });
samples.Add(new MySample { SortOrder = 1, Data = "C Third Description", Description = "C Third Description" });
samples.Add(new MySample { SortOrder = 1, Data = "B Second Description", Description = "B Second Description" });
samples.Add(new MySample { SortOrder = 0, Data = "None", Description = "None" });
samples.OrderBy(a => a.SortOrder).ThenBy(a => a.Description).ToList();
foreach (var item in samples)
{
Console.WriteLine(item);
}
public class MySample
{
public int SortOrder { get; set; }
public string Description { get; set; }
public object Data { get; set; }
}
Если я изменю свой код, чтобы сделать следующее, он печатает в требуемом порядке.
samples = samples.OrderBy(a => a.SortOrder).ThenBy(a => a.Description).ToList();
Можно ли заказать заказ без назначения (например, выше)?
FYI, этот пример не является фактическим кодом. Мне нужно привязать этот список к ComboBox
в WPF
с помощью кода, использующего FrameworkElementFactory
.
Спасибо за помощь!
Обновление с моим подходом:
var collectionView = CollectionViewSource.GetDefaultView(<My list to be sorted>);
collectionView.SortDescriptions.Add(new SortDescription("SortOrder", ListSortDirection.Ascending));
collectionView.SortDescriptions.Add(new SortDescription("Description", ListSortDirection.Ascending));
выше сделал трюк в пользовательском интерфейсе. Я благодарю всех за быстрые ответы.
'list' обеспечивает' Сгруппировать 'функция, которая не требует назначения, но это сложнее, потому что это связано с написанием собственного Comparer. –
Один основной вопрос. Все ответы были очень полезными. Я не уверен, как правильно выбрать ответ в этом сценарии? – isakavis