Mam listę obiektów, które zawierają obiekt Person, który może mieć wartość null. Chciałbym uzyskać wartość właściwości Name pierwszego obiektu Person, która nie jest pusta, a wszystkie obiekty Person są puste, zwracając pusty ciąg.LINQ - Zwracanie wartości właściwości obiektu, która nie jest pusta
Moja najlepsza próba jest następujący:
string userName = MyObjectList.FirstOrDefault(x => x.Person != null).Person.Name ?? string.Empty;
Chyba rozumiem, dlaczego to nie działa; Jeśli dla każdego obiektu na mojej liście Person ma wartość NULL, otrzymamy wartość domyślną, która będzie miała wartość NULL i spowoduje błąd zerowy odniesienia podczas próby uzyskania dostępu do właściwości Person.
Mogę uzyskać wynik, który chcę, sprawdzając, czy jakikolwiek obiekt nie jest pusty, a następnie otrzymuję pierwszy, ale wolałbym to osiągnąć w jednym poleceniu LINQ. Każde wejście jest doceniane, dzięki.
+1 dla czystej, pojedynczej kwerendzie LINQ –
Można również użyj 'DefaultIfEmpty', aby uczynić go czystym rozwiązaniem LINQ, jeśli chcesz. – Servy
@Servy Dobry punkt. Zawarłem rozwiązanie DefaultIfEmpty, które powinno działać. –