Mam kwerendy, która powinna być uporządkowany tak:Pomiń ThenBy na pustych obiektów
var list = new List<MonthClosureViewModel>();
var orderedList = list
.OrderByDescending(x => x.Project)
.ThenByDescending(x => x.ChargeLine)
.ThenByDescending(x => x.DomesticSite) //<- x.DomesticSite might be null sometimes
.ThenByDescending(x => x.ChargeSite) //<- x.ChargeSite might be null sometimes
.ThenByDescending(x => x.RateGroup)
.ThenByDescending(x => x.ApprovedHrs)
.ThenByDescending(x => x.NotApprovedHrs);
public class MonthClosureViewModel
{
public Project Project { get; set; }
public ChargeLine ChargeLine { get; set; }
public Site DomesticSite { get; set; }
public Site ChargeSite { get; set; }
public RateGroup RateGroup { get; set; }
public decimal Rate { get; set; }
public decimal ApprovedHrs { get; set; }
public decimal NotApprovedHrs { get; set; }
}
Ale jeśli jakiś obiekt jest null (całkowicie zgodne z projektem) ta kwerenda nie powiedzie się. Jak mogę umieścić wartości puste na końcu lub pominąć porządkowanie, jeśli obiekt ma wartość NULL?
DODANO:jak @ LasseV.Karlsen wspomniał, że MOGĘ mieć INNY problem. Naprawdę dostałem ArgumentNullException
, ale powodem nie był jakiś obiekt był null
(widziałem go w debugerze i fałszywie myślałem, że to był mój problem). Prawdziwy powód był @ RaphaëlAlthaus wspomniano, że nie wdrożyć IComparable<>
w każdej z moich klas MonthClosureViewModel
...
Po Robiłem to wszystko zacząć działać zgodnie z przeznaczeniem, nawet jeśli obiekt jest null
możesz nam powiedzieć * * jak to się nie powiedzie? Zasadniczo, jaki jest typ wyjątku, komunikat wyjątku i stos śledzenia? 'ThenByDescending' nie wyrzuci wyjątku, jeśli wynikiem wywołania tego delegata jest' null', więc musi być coś innego, co nie powiedzie się. –
Czy "niepowodzenie" oznacza coś zupełnie innego, np. Tworzenie danych posortowanych w nieprawidłowej kolejności? –
@ LasseV.Karlsen nie powiedzie się z 'ArgumentNullException'. 'ThenByDescending' wyrzuca go, gdy' source' lub 'selector' ma wartość null [łącze msdn] (https://msdn.microsoft.com/ru-ru/library/bb534736 (v = vs.110) .aspx). – Szer