Mam IEnumberable
kolekcję przedmiotów. Używam .Single()
, aby znaleźć określony obiekt w kolekcji.LINQ pojedynczy() Wyjątek dla 0 lub wielu elementów
wybiorę używać Single()
dlatego nie powinno być tylko jeden konkretny przedmiot. Jeśli jednak nie istnieje, muszę go utworzyć i dodać do kolekcji.
Moim problemem jest to, że Single()
rzuca ten sam błąd, jeśli nie ma elementu pasującego predykat lub jeśli istnieje wiele elementów. Mój pomysł polegał na tym, aby przetestować połączenie Single()
i wychwycić wyjątek, dodać element, a następnie kontynuować. Ponieważ jednak oba scenariusze rzucają InvalidOperationException
, jak mogę stwierdzić, czy jest to spowodowane brakiem elementów lub wieloma elementami?
Wiem, że mogę używać First()
, ale to nie oznacza, że powinien istnieć tylko jeden (bez wykonywania dodatkowej pracy).
mogę również użyć Count()
przed wywołaniem Single()
, ale to po prostu wydaje się podważać sensu Single()
Cóż, to zwraca wartość domyślną dla danego typu elementu. Jest to wartość pusta dla typów referencyjnych, ale oczywiście nie dla typów wartości nienależących do wartości zerowej ... –
... a jeśli chcesz łączyć sprawdzanie wartości NULL, możesz użyć czegoś takiego http://napoleonss.wordpress.com/2011/12/ 20/my-check-null /. Działa domyślnie dla typów – napoleonss
@JonSkeet Masz rację. Zakładałem, że mówił o typie referencyjnym. –