J'essaie d'obtenir des valeurs de xml, et j'ai un problème avec la valeur vide. J'utilise cette requête pour obtenir toutes les valeurs non vides de Attribute « Rodz », et ce code fonctionne, mais il me renvoyer des valeurs vides aussi:/Problème avec la requête linq avec la valeur vide
XDocument loaded = XDocument.Load(@"c:\TERC.xml");
var q = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select r.Descendants("col").Where(col1 =>
col1.Attribute(XName.Get("name")).Value ==
"RODZ").Where(kc => kc.ToString() != "").FirstOrDefault().Value ?? "0").ToList();
Tis est un gros problème pour moi parce que je suis doit analyser toutes les valeurs int, et cette requête ne fonctionne pas:
var q = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select int.Parse(r.Descendants("col").Where(col1 =>
col1.Attribute(XName.Get("name")).Value ==
"RODZ").Where(kc => kc.ToString() != "").FirstOrDefault().Value ?? "0")
).ToList();
Je veux obtenir 0 lorsque la valeur est nulle, parce que je convertir plus tard à Enum.
Voyez-vous ce qui fonctionne avec ce code?
<?xml version="1.0" encoding="UTF-8" ?>
<teryt>
<catalog name="Compix">
<row>
<col name="NAME">Name1</col>
<col name="ID"/>
</row>
<row>
<col name="NAME">Name2</col>
<col name="ID">1</col>
</row>
<row>
<col name="NAME">Name3</col>
<col name="RODZ">2</col>
</row>
</catalog>
</teryt>
Je vois :) mais maintenant FirstOrDefault() Valeur me donne exceptiom, lorsque la valeur est nulle. . Je ne suis pas bon avec linq:/ – user278618
Mis à jour. Utilisez IsEmptyOrNull. – Aliostad