Linqのリストを注文するには、OrderBy
と電話をかけてください。ThenBy
に電話をかけてください。最上位の注文が不明なオーダーリスト
私は、手前でトップレベルの注文がわからない状況にあります。私は条件付きで適用されるべき注文のリストを持っています。
var list = new List<Tuple<int, string, DateTime>>();
list.Add(new Tuple<int, string, DateTime>(1, "B", new DateTime(2020, 1, 1)));
list.Add(new Tuple<int, string, DateTime>(2, "A", new DateTime(2000, 1, 1)));
list.Add(new Tuple<int, string, DateTime>(3, "C", new DateTime(1900, 1, 1)));
var orderedList = list;
if (sortByString)
{
orderdedList = orderedList.ThenBy(listItem => listItem.Item2);
}
if (sortByDateTime)
{
orderedList = orderedList.ThenBy(listItem => listItem.Item3);
}
orderList = orderedList.ThenBy(listItem => listItem.Item1);
ので、リストは常に最初にアイテム2および/またはITEM3によって条件付きアイテム1が注文、およびされます。このよう
。
これをC#でどのように行うには? Linqのないソリューションも大歓迎です。
の下のコードのようなステート・マシンを使用する必要がありますすべて**そのまま**最後の行 – Carsten
'ThenBy'は' IOrderedEnumerable'でのみ利用できるので、型チェックを使うことができます。 'IOrderedEnumerable'が' ThenBy'を使用する場合 'else' OrderBy' – Jehof
@Carstenそれは、Johanが' Item1'を*最後に*注文したいと思うという問題です。 – Luaan