Próbuję zapobiec wartości NULL podczas parsowania pliku XML do niestandardowego obiektu przy użyciu LINQ.C# ?? operator koalesulacji zerowej LINQ
Znalazłem świetne rozwiązanie dla tego na Scott Gu's blog, ale z jakiegoś powodu nie działa dla liczb całkowitych ze mną. Myślę, że użyłem tej samej składni, ale wydaje mi się, że czegoś brakuje. Aha i z jakiegoś powodu działa, gdy węzeł nie jest pusty.
Poniżej znajduje się wyciąg z mojego kodu.
List<GrantAgresso> lsResult = (from g in xml.Element("root").Elements("Elementname")
select new GrantAgresso()
{
Year = (int?)g.Element("yearnode") ?? 0,
Subdomain = (string)g.Element("domainnode") ?? ""
}).ToList();
ErrorMessage jest:
Input string was not in a correct format.
Jeśli ktoś ma pojęcia, co robię źle, proszę o pomoc :)
Edycja: kawałek XML (dziwne nazwy, ale to nie z wyboru)
<Agresso>
<AgressoQE>
<r3dim_value>2012</r3dim_value>
<r0r0r0dim_value>L5</r0r0r0dim_value>
<r7_x0023_province_x0023_69_x0023_V005>0</r7_x0023_province_x0023_69_x0023_V005>
<r7_x0023_postal_code_x0023_68_x0023_V004 />
<r7_x0023_country_x0023_67_x0023_V003>1004</r7_x0023_country_x0023_67_x0023_V003>
<r7_x0023_communitydistrict_x0023_70_x0023_V006>0</r7_x0023_communitydistrict_x0023_70_x0023_V006>
</AgressoQE>
</Agresso>
Mój zakład jest na niewłaściwej składni XML. Czy możesz pokazać zawartość xml? Operator koalescji ma rację, a jeśli nie, to nie wyrzuci tego błędu (nie ma nic wspólnego z łańcuchami). –
Czy przypisanie "Rok" lub "Subdomena" powoduje wyjątek? Możesz wypróbować komentarz w jednym z wierszy, aby sprawdzić, czy wyjątek zniknie. – Mizipzor
Dodałem węzeł xml do mojego posta. Jest to pusty węzeł (zaczynający się od r7_), który uruchamia wyjątek. Kod, którego użyłem do jego pobrania, jest taki sam jak ten, z którego korzystałem przez rok. – Nielsm