Estoy tratando de evitar tener valores NULL cuando analizo un archivo XML en un objeto personalizado utilizando LINQ.C# ?? nulo coalescente operador LINQ
Encontré una gran solución para esto en Scott Gu's blog, pero por alguna razón no funciona para enteros conmigo. Creo que he usado la misma sintaxis, pero parece que me falta algo. Ah, y por alguna razón funciona cuando el nodo no está vacío.
A continuación se muestra un extracto de mi código.
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();
El ErrorMessage es:
Input string was not in a correct format.
Si alguien tiene una idea de lo que estoy haciendo mal, por favor ayuda :)
Edición: pieza de XML (nombres extraños, pero es no por elección)
<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>
Mi apuesta está en la sintaxis XML incorrecta. ¿Puedes mostrar el contenido xml? El operador de fusión es correcto y, si no fuera así, no lanzaría este error (no tiene nada que ver con las cadenas) –
¿La asignación 'Año' o' Subdominio' arroja la excepción? Podría intentar comentar una de las líneas para ver si la excepción desaparece. – Mizipzor
He agregado un nodo del xml a mi publicación. Es el nodo vacío (que comienza con r7_) que desencadena la excepción. El código que he usado para recuperarlo es el mismo que he usado para el año. – Nielsm