I have the following XML data:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data-set xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <record>
        <LevelNum>0</LevelNum>
        <LevelName>Level 0</LevelName>
        <MaxBubbles>40</MaxBubbles>
        <MaxVisibleBubbles>30</MaxVisibleBubbles>
        <StartingPointValue>11</StartingPointValue>
        <MaxLevelTime>78</MaxLevelTime>
        <LevelPassScore>3000</LevelPassScore>
        <TapsToPopStandard>1</TapsToPopStandard>
        <InitialVisibleBubbles>9</InitialVisibleBubbles>
        <LevelDescription>Level 80</LevelDescription>
        <SeqLinear>1</SeqLinear>
        <SeqEven>0</SeqEven>
        <SeqOdd>0</SeqOdd>
        <SeqTriangular>0</SeqTriangular>
        <SeqSquare>0</SeqSquare>
        <SeqLazy>0</SeqLazy>
        <SeqFibonacci>0</SeqFibonacci>
        <SeqPrime>0</SeqPrime>
        <SeqDouble>0</SeqDouble>
        <SeqTriple>0</SeqTriple>
        <SeqPi>0</SeqPi>
        <SeqRecaman>0</SeqRecaman>
    </record>
</data-set>
I am currently reading this data with the following:
    //---------------------------------------------------------------------------------------------------------
    // ReadLevels
    //---------------------------------------------------------------------------------------------------------
    // Reads the contents of the levelInfo.xml file and builds a list of level objects with the data in the 
    // xml file.  Allows for easy changing of level setup and addint new levels
    //---------------------------------------------------------------------------------------------------------
    public List<Level> ReadLevels(XDocument levelInfo)
    {
        levelInfo = XDocument.Load ("./levelinfo.xml");
        List<Level> lvl = (from level in levelInfo.Root.Descendants ("record") // "record" has to match the record level identifier in the xml file
            select new Level {
                LevelNum = int.Parse (level.Element ("LevelNum").Value),
                LevelName = level.Element ("LevelName").Value,
                MaxBubbles = int.Parse (level.Element ("MaxBubbles").Value),
                MaxVisibleBubbles = int.Parse (level.Element ("MaxVisibleBubbles").Value),
                StartingPointValue = int.Parse (level.Element ("StartingPointValue").Value),
                MaxLevelTime = int.Parse (level.Element ("MaxLevelTime").Value),
                LevelPassScore = int.Parse (level.Element ("LevelPassScore").Value),
                TapsToPopStandard = int.Parse (level.Element ("TapsToPopStandard").Value),
                InitialVisibleBubbles = int.Parse (level.Element ("InitialVisibleBubbles").Value),
                LevelDescription = level.Element ("LevelDescription").Value,
                SeqLinear = (bool)level.Element ("SeqLinear"),
                SeqEven = (bool)level.Element ("SeqEven"),
                SeqOdd = (bool)level.Element ("SeqOdd"),
                SeqTriangular = (bool)level.Element ("SeqTriangular"),
                SeqSquare = (bool)level.Element ("SeqSquare"),
                SeqLazy = (bool)level.Element ("SeqLazy"),
                SeqFibonacci = (bool)level.Element ("SeqFibonacci"),
                SeqPrime = (bool)level.Element ("SeqPrime"),
                SeqDouble = (bool)level.Element ("SeqDouble"),
                SeqTriple = (bool)level.Element ("SeqTriple"),
                SeqPi = (bool)level.Element ("SeqPi"),
                SeqRecaman = (bool)level.Element ("SeqRecaman")
            }).ToList ();
        return lvl;
    }
My current data structure for the level data looks like this:
public class Level
{
    public int LevelNum { get; set; }
    public string LevelName { get; set; }
    public int MaxBubbles { get; set; }
    public int MaxVisibleBubbles { get; set; }
    public int StartingPointValue { get; set; }
    public int MaxLevelTime { get; set; }
    public int LevelPassScore { get; set; }
    public int TapsToPopStandard { get; set; }
    public int InitialVisibleBubbles { get; set; }
    public string LevelDescription { get; set; }
    public bool SeqLinear { get; set; }
    public bool SeqEven { get; set; }
    public bool SeqOdd { get; set; }
    public bool SeqTriangular { get; set; }
    public bool SeqSquare { get; set; }
    public bool SeqLazy { get; set; }
    public bool SeqFibonacci { get; set; }
    public bool SeqPrime { get; set; }
    public bool SeqDouble { get; set; }
    public bool SeqTriple { get; set; }
    public bool SeqPi { get; set; }
    public bool SeqRecaman { get; set; }
    public Level ()
    {
    }
}
I'm thinking that there is a better way to handle the list of boolean flag properties. Rather than have them all listed and set each one individually, it would probably be better to store these in a list or dictionary.
My problem is I don't know how I would deserialize the XML data to do that. I'm already creating a list of level objects, but I don't know how I would create the 'list within a list' the right way.
Is is possible to create another list with the list I'm already creating using nested linq statements or is there another way I should be doing this?
 
     
     
    