我对按多列排序列表有疑问。在下面的示例中,尽管我排序以显示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