I am trying to do a mapping between C# and XML with LINQ. Currently, I have a class defined in C# that looks like this:
Item.cs
public class Item { public string DepartmentName { get; set; } public Dictionary<string, string> DepartmentNames { get; set; } public string Name { get; set; } public Dictionary<string, string> Names { get; set; } } My XML file looks like this:
departments.xml
<Departments> <Department Name="Sports" Title="Sports Department" Path="/sports" en-us="Sports" de-de="Sport"> <Item Name="Football" en-us="Football" de-de="Fußball" es-mx="" /> <Item Name="TennisBall" en-us="Tennis Ball" de-de="Tennisball" /> </Department> <Department Name="Automotive" Title="Automotive Department" Path="/autos" en-us="Automotive" de-de="kraftfahrtechnisch"> <Item Name="Oil" en-us="Oil" de-de="Öl" /> <Item Name="Tires" en-us="Tires" de-de="Bereifung" es-mx="Ruedas" /> </Department> </Departments> Basically, I have some values I want to load into a definite properties. Then, I have a list of attributes I know ("en-us", "de-de", "es-mx") that I want to load into Dictionaries. Currently, I have the following:
var items = XDocument.Parse(File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\Items.xml"))) .Element("Departments") .Elements("Department") .Elements("Item") .Select(e => new Item { DepartmentName = ?, DepartmentNames = ?, Name = e.Attribute("Name").Value, Names = ? }).ToList(); I'm not sure how to load the properties from a) The parent elements b) Load the Dictionary object. Is this even possible with LINQ? Essentially, I'm trying to flatten out my data structure in-memory.
List<Item>items with that XML data, using LINQ?