2011-01-05 21 views
2

我有以下XML的結構(從不是很好執行的外部源):LINQ到XML,尋找項目這是在一個特定的類別

<items> 
<item> 
    <allkindsofinfo></allkindsofinfo> 
    <categories> 
    <category> 
    <name>cat1</name> 
    </category> 
    <category> 
    <name>cat2</name> 
    </category> 
    <category> 
    <name>cat3</name> 
    </category> 
    </categories> 
    </item> 
<item> 
    etcetera 

大約有150項,所有包含幾個類別。

現在,使用LINQ,我想獲取所有在某個類別中的項目。 我試過WHERE子句中的以下內容:

item.Element("categories").Elements("category").Elements("name").ToString().Contains("cat2") 

這不返回任何結果,即使我知道它應該。

如果我嘗試:

item.Element("categories").Element("category").Element("name").ToString().Contains("cat2") 

,如果類別名稱是在該項目的第一個返回結果。

如何遍歷每個項目的類別名稱以查看它是否包含某個字符串並過濾掉這些項目?

任何幫助是非常讚賞... :-)

回答

1

where item.Element("categories").Elements("category").Elements("name").Any(n => n.Value = "cat2")如果name元素的值應該是準確cat2應該做的。或者如果名稱元素應該包含「cat2」作爲子字符串,則使用where item.Element("categories").Elements("category").Elements("name").Any(n => n.Contains("cat2"))

+0

非常感謝......--) – vlottus 2011-01-06 09:40:54