代码之家  ›  专栏  ›  技术社区  ›  Amit

使用linq扩展方法选择xml中的元素

  •  0
  • Amit  · 技术社区  · 14 年前

    我对linq不太熟悉,我想知道如何使用 (不使用查询表达式)

    <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 回复  |  直到 11 年前
        1
  •  1
  •   Jon Skeet    14 年前

    假设“选择的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 一旦 而不是每次比较。。。