C# LINQ to XML

Azubis

Grünschnabel
Hallo,
ich verwende das erste mal LINQ to XML und habe Schwierigkeiten meinen XML Code zu generieren. Dateien öffnen und auslesen klappt wunderbar.

Ich habe eine Klasse Picture und eine davon abgeleitete Reference. In Reference wird die Position gepseichert. In Picture hab ich 2 Integer Listen.

So etwas soll am Ende rauskommen:
Code:
<puzzle>
 <reference id="0" position="Wert aus Reference Objekt">
  <edge id="0" x="1. Wert aus 1. Liste" y="1. Wert aus 2. Liste" />
  <edge id="1" x="2. Wert aus 1. Liste" y="2. Wert aus 2. Liste" />
  ...
 </reference>
 ...
</puzzle>

Die Methode dafür sieht momentan so aus:
PHP:
public void saveXml(string url, List<Reference> references)
{
    XDocument doc = new XDocument();

    doc.Add(new XElement("puzzle",
        from re in references
        select new XElement("references", new XAttribute("position", re.getPos()),
            from x in re.getX()
            select new XElement("edge", new XAttribute("x", x))
    )));
    doc.Save(url);
}

getPos() liefert die Position
getX() die 1. Liste. Die zweite Liste wäre getY()

Das Ergebnis davon ist schonmal nicht schlecht, aber leider fehlen mir da drin noch die Wete aus der 2. Liste und die jeweiligen IDs. Die können aber beim abspeichern dynamisch erzeugt werden, also per i++ oder ähnlichem.

Ich weiß aber nicht mehr weiter und auch über verschiedene Tutorials komm ich da nicht weiter, wie gesagt, das erste mal das ich mit LINQ arbeite.

Danke!
 
Zuletzt bearbeitet:
Hi.

C#:
	XDocument doc = new XDocument();

	var id = 0;
	doc.Add(new XElement("puzzle",
			from re in references
			let xs = re.getX()
			let ys = re.getY()
			select
			new XElement("reference", new XAttribute("position", re.getPos()), new XAttribute("id", id++),
				from i in Enumerable.Range(0, xs.Count)
				select new XElement("edge", new XAttribute("id", i), new XAttribute("x", xs[i]), new XAttribute("y", ys[i]))
		)));
Gruß
 
Zurück