我对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>
答案 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
一次,而不是每次比较......