Ich habe eine benutzerdefinierte Konfigurationsdatei.
%Vor%Ich habe diese Datei über die IConfigurationHandler-Schnittstellenimplementierung gelesen. Wenn ich die childNode-Attribute des Detail-Elements lese. Es gibt mir unter Ergebnis in Immediate Window von IDE zurück.
%Vor%Wenn ich versuche, auf Konsole
zu schreiben %Vor%es bringt mich zurück
%Vor% elem.Attributes.Item(1)
Methode gibt mir die Details Name und Wert, aber hier muss ich den Indexwert des Attributs übergeben, das ich derzeit nicht kenne.
Ich möchte Name und Wert des Attributs über die LINQ-Abfrage und die individuelle Anzeige in der Konsole für jedes childNode-Attribut wie folgt abrufen:
%Vor%Wie kann ich das erreichen?
Wenn Sie diese Xml-Bibliothek verwenden möchten, können Sie alle Schüler und ihre Details mit diesem Code erhalten:
%Vor%Um dann über sie zu iterieren, benutze:
%Vor%Sie können Linq Select und string.Join verwenden, um die gewünschte Ausgabe zu erhalten.
%Vor% Wenn Sie die Attribute in einem object[]
haben, wie Sie es geschrieben haben, was von
Das Problem ist, dass Sie anonyme Typen haben, deren Namen nicht einfach extrahiert werden können.
Sehen Sie sich diesen Code an (Sie können ihn in die main () - Methode eines LinqPad-Editorfensters einfügen, um ihn auszuführen):
%Vor%Da Sie nicht auf die Eigenschaften Name und Wert der Variablen Attribute im Objekt [] -Array zugreifen können, weil der Compiler sie vor Ihnen versteckt, liegt der Trick darin Verwenden Sie die Join (",", a) -Methode, um diese Einschränkung zu umgehen.
Alles was Sie danach tun müssen, ist trimmen und Teilen die resultierende Zeichenfolge und schließlich ein neues Objekt mit Wert und zu erstellen Name Eigenschaften. Sie können es ausprobieren, wenn Sie die Zeile linq.Dump (); in LinqPad auskommentieren - es gibt zurück, was Sie wollen und es ist außerdem mit Linq-Anweisungen abfragbar.
Tags und Links c# linq xml linq-to-xml