Wat ik wil is een Dictionary genereren op basis van een xml bestand met de volgende structuur:
In de dictionary komen dan source/target mappings van een enkele entity.
Nu heb ik dat volgens mij op een omslachtige manier gedaan:
De eerste foreach is omdat ik geen makkelijkere manier kon vinden om direct de Mappings property uit de query variabele te krijgen
Wat ik eigenlijk zou willen is gewoon direct een select maken waarin ik een Source en een Target zet en dan dus de volgende loop gebruiken:
Daar zit dus het probleem, het beste resultaat dat ik tot nu toe heb bereikt is alleen het eerste element te krijgen met 'Source = m.Element("mapping").Element("Source")'.
Ik ben dus benieuwd of hier een handigere oplossing voor is dan ik nu heb
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <root> <entity name="entity1"> <mapping> <source>source1</source> <target>target1</target> </mapping> <mapping> <source>source2</source> <target>targe2</target> </mapping> </entity> <entity name="entity2"> <mapping> <source>source1</source> <target>target1</target> </mapping> <mapping> <source>source2</source> <target>targe2</target> </mapping> </entity> </root> |
In de dictionary komen dan source/target mappings van een enkele entity.
Nu heb ik dat volgens mij op een omslachtige manier gedaan:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| XDocument mappingXml = XDocument.Load("mapping.xml"); Dictionary<string, string> mappings = new Dictionary<string, string>(); var query = from m in mappingXml.Descendants("entity") where (string)m.Attribute("name") == "entity1" select new { Mappings = m.Elements("mapping") }; foreach (var v in query) { foreach (XElement xe in v.Mappings) { mappings.Add(xe.Element("source").Value, xe.Element("target").Value); } } |
De eerste foreach is omdat ik geen makkelijkere manier kon vinden om direct de Mappings property uit de query variabele te krijgen

Wat ik eigenlijk zou willen is gewoon direct een select maken waarin ik een Source en een Target zet en dan dus de volgende loop gebruiken:
C#:
1
2
3
4
| foreach (var v in query) { mappings.Add(v.Source, v.Target); } |
Daar zit dus het probleem, het beste resultaat dat ik tot nu toe heb bereikt is alleen het eerste element te krijgen met 'Source = m.Element("mapping").Element("Source")'.
Ik ben dus benieuwd of hier een handigere oplossing voor is dan ik nu heb
Kater? Eerst water, de rest komt later