リストを複数の列でソートする方法について質問があります。次のサンプルでは、 show に並べ替えてもNone, A First Description, B Second...
、リストは挿入された順序で印刷されます。
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();
(上記のように)割り当てなしで注文を行うことはできますか?
参考までに、この例は実際のコードではありません。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));
上記はUIでトリックを行いました。迅速な回答に感謝します。