Can anyone help on how to process the information within Fields only when the Condition is True ?

I've tried For each and if then but I would like something more graceful.

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<Events>  
    <Event Id="1">
        <Condition>True</Condition>
        <Fields>
            <Parameter Name="thisOne" Value="1234" />
            <Parameter Name="notthisOne" Value="xyz" />
            <Parameter Name="thisoneagain" Value="5678" />
            <Parameter Name="notthisoneAgain" Value="abc" />
        </Fields>
    </Event>
    <Event Id="2">
        <Condition>False</Condition>
        <Fields>
            <Parameter Name="thisOne" Value="1234" />
            <Parameter Name="notthisOne" Value="xyz" />
            <Parameter Name="thisoneagain" Value="5678" />
            <Parameter Name="notthisoneAgain" Value="abc" />
        </Fields>
    </Event>
</Events>  
</root>

Use the Where Clause to restrict the set of data in LINQ to XML.

You can get the value of a particular element by drilling down into the element and calling .Value

This will load all the name and value for all the each parameter that is part of an Event that has a condition element with a value of True:

<!-- language: lang-vb -->
Dim xdoc As XDocument = XDocument.Parse(str)

Dim parameters = From e In xdoc.Root.Elements("Events").Elements("Event")
                 From p In e.Elements("Fields").Elements("Parameter")
                 Where e.Element("Condition").Value = "True"
                 Select New With {
                         .Name = p.Attribute("Name").Value,
                         .Value = p.Attribute("Value").Value
                     }