Ich versuche zu verhindern, NULL-Werte zu haben, wenn ich eine XML-Datei mit LINQ zu einem benutzerdefinierten Objekt analysiere.C# ?? null Koaleszenzoperator LINQ
Ich fand eine großartige Lösung für dieses auf Scott Gu's blog, aber aus irgendeinem Grund funktioniert es nicht für Ganzzahlen mit mir. Ich denke, ich habe die gleiche Syntax verwendet, aber es scheint, dass mir etwas fehlt. Oh, und aus irgendeinem Grund funktioniert es, wenn der Knoten nicht leer ist.
Unten ist ein Auszug aus meinem Code.
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();
Die Fehlernachricht ist:
Input string was not in a correct format.
Wenn jemand eine Ahnung, hat, was ich falsch mache, bitte helfen :)
Edit: Stück XML (seltsame Namen, aber es ist nicht durch Wahl)
<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>
Meine Wette ist auf eine falsche XML-Syntax. Können Sie den XML-Inhalt anzeigen? Der Coalesce-Operator hat Recht und wenn nicht, würde es diesen Fehler nicht auslösen (es hat nichts mit Strings zu tun) –
Ist die 'Year'- oder' Subdomain'-Zuweisung die Ausnahme? Sie könnten versuchen, eine der Zeilen zu kommentieren, um zu sehen, ob die Ausnahme verschwindet. – Mizipzor
Ich habe einen Knoten des xml zu meinem Beitrag hinzugefügt. Es ist der leere Knoten (beginnend mit r7_), der die Ausnahme auslöst. Der Code, mit dem ich ihn abgerufen habe, ist derselbe, den ich für das Jahr verwendet habe. – Nielsm