2010-08-11 108 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