Проблема с запросом linq с пустым значением - PullRequest
1 голос
/ 30 октября 2010

Я пытаюсь получить значения из xml, и у меня проблема с пустым значением.Я использую этот запрос, чтобы получить все непустые значения из атрибута "RODZ", и этот код работает, но он также возвращает мне пустые значения: /

 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();

Это большая проблема для меня, потому что яя должен разобрать все значения в int, и этот запрос не работает:

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();

Я хочу получить 0, когда значение равно нулю, потому что позже я конвертирую его в Enum.

Вы видите, что работает с этим кодом?

<?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>

1 Ответ

1 голос
/ 30 октября 2010

Ваша проблема в этом бите:

 where(kc => kc.ToString() != "")

измените его на:

 where(kc => !string.IsEmptyOrNull(kc.Value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...