2011-01-05 2 views
2

Ich habe die folgende XML-Struktur (von einer externen Quelle, die nicht sehr gut ausgeführt ist):Linq to XML, findet Gegenstände, die in einer bestimmten Kategorie sind

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

Es gibt etwa 150 Artikel, die alle enthalten ein paar Kategorien.

Jetzt, mit Linq, möchte ich alle Elemente abrufen, die in einer bestimmten Kategorie sind. Ich habe versucht, die folgenden in der where-Klausel:

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

Dies keine Ergebnisse zurück, auch wenn ich weiß, es sollte.

Wenn ich versuche:

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

es Ergebnisse liefert, falls die Kategorie der ersten in dem Artikel ist.

Wie kann ich die Kategorienamen jedes Elements durchlaufen, um zu sehen, ob es eine bestimmte Zeichenfolge enthält, und diese Elemente herausfiltern?

Jede Hilfe wird sehr geschätzt ... :-)

Antwort

1

where item.Element("categories").Elements("category").Elements("name").Any(n => n.Value = "cat2") tun soll, wenn der name Elementwert soll cat2 genau sein. Oder verwenden Sie where item.Element("categories").Elements("category").Elements("name").Any(n => n.Contains("cat2")), wenn das name-Element "cat2" als Teilzeichenfolge enthalten soll.

+0

Vielen Dank ... :-) – vlottus