Aby zamówić listę z Linq, musimy zadzwonić pod numer OrderBy
po raz pierwszy pod numerem ThenBy
w sprawie wyniku dla podrzędnych zamówień.lista zamówień, w których zamówienie na najwyższym poziomie jest nieznane
Jestem w sytuacji, w której nie znam kolejności na najwyższym poziomie przed rozdaniem. Mam listę zamówień, które powinny być stosowane warunkowo.
Jak to:
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);
więc lista będzie zawsze być sortowane według Element 1, a warunkowo przez ITEM2 i/lub ITEM3 pierwszy.
Jak to zrobić w języku C#? Rozwiązania bez Linq są również mile widziane.
co jest nie tak z tym, co masz - wystarczy napisać 'var orderedlist = list.OrderBy (t => t.Item1);' a zachowaj wszystko ** ale ** ostatnia linia – Carsten
'ThenBy' jest dostępna tylko na' IOrderedEnumerable', więc możesz użyć sprawdzenia typu. Jeśli 'IOrderedEnumerable' użyje' ThenBy' else 'OrderBy' – Jehof
@Carsten Problem z tym, że Johan chce zamówić' Item1' * ostatni *. Nie jest to łatwe do odczytania, ale to właśnie napisał :) – Luaan