8 Stimmen

Linq to Xml: Auswahl von Elementen, wenn ein Attributwert gleich einem Knotenwert in einem IEnumerable<XElement> ist

Ich erstelle ein IEnumerable-Objekt, das nur die gewünschten Knoten aus einer Xml-Datei enthält:

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 von diesen:

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

Ich möchte nur die Benutzer erfassen, bei denen 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 wird ein Fehler angezeigt:

Die Typargumente für die Methode 'System.Linq.Enumerable.Contains(System.Collections.Generic.IEnumerable, TSource)' können nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.

Was ist an meinem Ansatz falsch?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X