我對按多列排序列表有疑問。在下面的示例中,儘管我排序以顯示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();
排序可以不分配(如上所述)嗎?
僅供參考,這個例子不是實際的代碼。我需要通過使用FrameworkElementFactory
後面的代碼將此列表數據綁定到ComboBox
的WPF
。
感謝您的幫助!
更新與我的方法:
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));
上面的確在UI的伎倆。我感謝所有的快速答案。
'List'提供了'排序'函數不需要賦值,但它更復雜,因爲它涉及編寫自己的比較器。 – 2013-03-22 17:21:47
一個基本問題。所有的答案都非常有幫助。我不確定我在這種情況下如何選擇正確答案? – isakavis 2013-03-22 19:20:03