Linq to Xml: Elemente ausgewählt werden, wenn ein Attribut-Wert entspricht einem Knotenwert in einem IEnumerable<XElement - >

Erstelle ich ein IEnumerable-Objekt, das enthält nur die Knoten, ich möchte aus einer xml-Datei:

IEnumerable<XElement> rosters = XDocument.Load("roster.xml")
                                         .Elements("rosterlist")
                                         .Elements("roster")
                                         .Where(w => w.Element("division")
                                                      .Value
                                                      .Equals("SUPER AWESOME DIVISION"));

Es ist also eine Sammlung dieser:

<rosterlist>
    <roster>
        <userid>1</userid>
        <name></name>
        <etc></etc>
    </roster>
    <roster>
        <userid>2</userid>
        <name></name>
        <etc></etc>
    </roster>
</rosterlist>

Ich soll die nehmen Sie nur die Benutzer, wo die userid - Attribut ist auch ein userid Knoten innerhalb der rosters Sammlung.

IEnumerable<XElement> users = XDocument.Load("user.xml")
                                       .Elements("userlist")
                                       .Elements("user")
                                       .Where(w => rosters.Elements("userid")
                                                          .Contains(w.Attribute("userid").Value));

Aber es gibt mir eine Fehlermeldung:

Den Typ der Argumente für die Methode 'System.Linq -.Enumerable.Contains(System.Sammlungen.Generisches.IEnumerable, TSource)' kann nicht abgeleitet werden aus der Nutzung. Versuchen Sie, den Typ der Argumente explizit.

Was ist falsch mit meinem Ansatz?

InformationsquelleAutor lolcat | 2009-02-22
Schreibe einen Kommentar