Benutzer mit den meisten Antworten
Optimierte LinQ Abfrage

Frage
-
Hallo,
<?xml version="1.0" encoding="utf-8"?>
<Adressen>
<Personen>
<Person>
<Name>Fischer</Name>
<Vorname>Manfred</Vorname>
<Alter>45</Alter>
<Adresse Ort="Bonn" Strasse="Gasse 1"></Adresse>
</Person>
<Kunde>
<Name>Tollsoft AG</Name>
</Kunde>
<Person>
<Name>Meier</Name>
<Vorname>Franz</Vorname>
<Alter>76</Alter>
<Adresse Ort="Ulm" Strasse="Avenue 12"></Adresse>
</Person>
<Person>
<Name>Schmidt</Name>
<Vorname>Detlef</Vorname>
<Alter>28</Alter>
<Adresse Ort="Bonn" Strasse="Weg 34"></Adresse>
</Person>
</Personen>
</Adressen>
Ich habe das.
Jetzt möchte ich eine Liste haben, wo nur die Orte vertreten sind.
Wie kann ich das am besten mit LinQ erreichen?
Also in diesem Beispiel
2 Einträge
- Bonn
- Ulm
Viele Grüße Oliver
- Bearbeitet Oliver Müller12 Donnerstag, 26. Oktober 2017 20:01
Antworten
-
Hallo Oliver,
Ich hoffe, dass Du mit folgendem Codeausschnitt weiterkommst:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ConsoleApplication1 { class Programm { static void Main(string[] args) { string s = "<Pfad zur XML-Datei"; XDocument xDok = XDocument.Load(s); var Ergebnisse = xDok.Descendants("Person").Where(x => (x.Element("Adresse") != null) && (x.Element("Adresse").Attribute("Ort") != null)).Select(x => x.Element("Adresse").Attribute("Ort").Value).Distinct(); //oder noch kürzer mit Visual C# 6.0 und 7.0 //var Ergebnisse = xDok.Descendants("Person").Where(x => x.Element("Adresse")?.Attribute("Ort") != null).Select(x => x.Element("Adresse").Attribute("Ort").Value).Distinct(); foreach (string Ergebnis in Ergebnisse) Console.WriteLine(Ergebnis); } } }
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Oliver Müller12 Freitag, 27. Oktober 2017 14:13
Alle Antworten
-
Hallo Oliver,
Ich hoffe, dass Du mit folgendem Codeausschnitt weiterkommst:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ConsoleApplication1 { class Programm { static void Main(string[] args) { string s = "<Pfad zur XML-Datei"; XDocument xDok = XDocument.Load(s); var Ergebnisse = xDok.Descendants("Person").Where(x => (x.Element("Adresse") != null) && (x.Element("Adresse").Attribute("Ort") != null)).Select(x => x.Element("Adresse").Attribute("Ort").Value).Distinct(); //oder noch kürzer mit Visual C# 6.0 und 7.0 //var Ergebnisse = xDok.Descendants("Person").Where(x => x.Element("Adresse")?.Attribute("Ort") != null).Select(x => x.Element("Adresse").Attribute("Ort").Value).Distinct(); foreach (string Ergebnis in Ergebnisse) Console.WriteLine(Ergebnis); } } }
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Als Antwort markiert Oliver Müller12 Freitag, 27. Oktober 2017 14:13