使用linq扩展方法在xml中选择一个元素

时间:2010-08-11 05:58:39

标签: linq linq-to-xml

我对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 个答案:

答案 0 :(得分:1)

假设通过“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 一次,而不是每次比较......