Ich habe eine xml, von dem mir einige Informationen über LINQ-Abfrage zu extrahieren versuchen.
Das Format der XML-Datei sieht wie folgt aus:LINQ-Abfrage Inhalt von XML-Klasse zu analysieren
<TopNode>
<Sample name="Tom" id="0" batch="1">
<Sequences>
<NextItem id="10">Stand1 ></NextItem>
<PreviousItem id="9">Stand2 ></PreviousItem>
</Sequences>
</Sample>
<Sample name="Hill" id="1" batch="1">
<Sequences>
<NextItem id="1">Stand1 ></NextItem>
<NextItem id="2">Stand3 ></NextItem>
<PreviousItem id="3">Stand4 ></PreviousItem>
</Sequences>
</Sample>
.
.
.
</TopNode>
ich sowohl eine Liste der Attribute von NextItem
bekommen haben und PreviousItem
aus der Abfrage. Dafür habe ich eine Klasse definiert, um meine Ergebnisse zu erhalten.
public class Extract
{
public string name
{
get;
set;
}
public int _id
{
get;
set;
}
}
LINQ Query (foreach Beispielknoten, die PreviousItem und NextItem Inhalt in Klassenobjekt erhalten):
var EnumerableContent = from item in XElement.Load("file.xml").Elements("NextItem")
select ???...
Das Problem ist, wie gehe ich die Daten an die Klasse hier in der obigen Abfrage-Objekte für jeden Sample-Knoten.
. Zweitens wird das oben nur mir NextItem-Knoten erhalten. Wie schreibe ich die Abfrage für NextItem und PreviousItem?
EDIT Im Großen und Ganzen muss ich für jede für jede der Sequence
Knoten ein IEnumerable erhalten, und dann wieder die Gesamt IEnumerable von thie Abfrage.
EDIT2 Zuordnung key
gibt mir diesen Fehler. Abfrage unter
var mapping = XDocument.Load("file.xml")
.Descendants("Sequences")
.Select(n => n.Descendants("PreviousItem")
.Union(n.Descendants("NextItem"))
.Select(n1 => new Extract { _id = (int)n1.Attribute("id"), Name = n1.Value })
).ToDictionary<IEnumberable<Menu>, int>(key => key._id);//and further converting this dictionary to sorted dictionary (sorted accordign to keys)
Das gibt mir die IEnumerable für jeden der NextItem und PreviousItem in der XML-Datei. Was ich will, ist eigentlich, dass für jede der Sequenzknoten, sollte ich eine enumberable erzeugen und dann eine Gesamt IEnumberable der oben zurückzukehren. Ich hoffe, ich kann das Problem vermitteln. ; -/ – Cipher
@Cipher Ich habe die Antwort aktualisiert, ich hoffe ich habe dich richtig verstanden. –
Danke! Ja, aber der Grund, warum ich schrieb eine Extarct Klasse war, dass ich das Ergebnis in einem Wörterbuch danach heißt '.ToDictionary' 'wo TValue' könnte der Extrakt Klasse IEnumberable umwandeln wollte. In der obigen Aussage, ich bin nicht in der Lage '.Select (neu Menu {SeekPoint = (int) n1.Attribute ("Zeit"), Neuertext = n1.Value})' –
Cipher