Get Attribute Name und Wert des Elements in C # durch System.Linq

8

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?

    
Saroop Trivedi 24.05.2012, 07:53
quelle

4 Antworten

3

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%     
Chuck Savage 14.06.2012, 20:38
quelle
3

Sie können Linq Select und string.Join verwenden, um die gewünschte Ausgabe zu erhalten.

%Vor%     
McGarnagle 24.05.2012 08:06
quelle
2

Dadurch werden alle Attribute der untergeordneten Elemente des Detailelements abgerufen, wie Sie in Ihrer Frage angeben.

%Vor%     
Jake1164 17.06.2012 02:06
quelle
0

Wenn Sie die Attribute in einem object[] haben, wie Sie es geschrieben haben, was von

gespottet werden kann %Vor%

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.

    
Matt 19.06.2012 12:22
quelle

Tags und Links