2010-08-11 55 views
0

我是小新的LINQ,并想知道我怎么可以在下面的基于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

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

+0

这是一个美妙的解释。非常感谢。编辑我的问题也适当框架。 – Amit 2010-08-11 06:31:00