выбор элемента в xml с использованием методов расширения linq - PullRequest
0 голосов
/ 11 августа 2010

Я немного новичок в linq, и мне было интересно, как я могу выбрать приложение в следующем xml на основе имени приложения, используя Методы расширения (без использования выражения запроса)

<applicationlist>
<application>
    <name>test1</name>
    <ele1>852</ele1
    <ele2>http://localhost/test1</ele2>
</application>

<application>
    <name>test2</name>
    <ele1>456</ele1
    <ele2>http://localhost/test2</ele2>
</application>
</applicationlist>

1 Ответ

1 голос
/ 11 августа 2010

Предполагая, что под «способом выбора SQL» вы подразумеваете «использование выражения запроса», давайте начнем с выражения вашего запроса:

var v = from b in root.Descendants("application")
      where b.Element("name").Value.Trim().ToLower() == appName.Trim().ToLower()
      select b;

При использовании методов расширения это будет просто:

var v = root.Descendants("application")
            .Where(b => b.Element("name").Value.Trim().ToLower() ==
                        appName.Trim().ToLower());

Я бы рекомендовал не проводить сравнение без учета регистра, так как у него есть культурные проблемы.Вместо этого используйте что-то вроде этого:

var v = root.Descendants("application")
            .Where(b => b.Element("name").Value.Trim().Equals(appName.Trim(),
                                     StringComparison.CurrentCultureIgnoreCase);

(или один из других вариантов StringComparison - или экземпляр StringComparer).

Возможно, вы также захотите обрезать appName один раз , а не для каждого сравнения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...