Cómo hacer coincidir elementos en XML - C #

Estoy usando un formulario para mostrar elementos XML. Cada vez que hago clic en un módulo dentro de un cuadro de lista, quiero mostrar su<Code> valor, por ejemplo, en una etiqueta en el formulario. El problema que tengo es que la forma en que lo hice es que el XML se está leyendo todo de una vez, y no puedo o no sé cómo buscar dentro de mi archivo XML. Así que creo que solo necesito una forma de buscar en XML para encontrar el<Code> elemento.

EDIT: Esto es lo lejos que estoy tratando de mostrar la<Code> elemento en la etiqueta cuando coincide con el<Name> elemento en el cuadro de lista:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{

    var document = XDocument.Load(workingDir + @"\ModulesList.xml");

    var code = from d in document.Descendants("Name")
               where d.Value == listBox1.SelectedItem.ToString()
               select d.Parent.Element("Code").Value;

    labelCodeNumber.Text = code.ToString();

}

Pero el problema es que labelCodeNumber no muestra el valor decode, muestra algunas cosas de colecciones extrañas en su lugar. Además, no estoy seguro de si estoy haciendo la salida correctamente, es decir,labelCodeNumber.Text = code.ToString();

Y aquí está el XML:

<?xml version="1.0" encoding="utf-8" ?>
<SoftwareEngineering>
  <Module>
    <Name>Algorithms and Data Structures</Name>
    <Code>3SFE504</Code>
    <Capacity>5</Capacity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>3D Graphics I</Name>
    <Code>3SFE508</Code>
    <Capacity>5</Capacity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Event-Driven Programming</Name>
    <Code>3SFE513</Code>
    <Capacity>10</Capacity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Object Oriented Design</Name>
    <Code>3SFE514</Code>
    <Capcity>10</Capcity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Requirements Engineering</Name>
    <Code>3SFE516</Code>
    <Capacity>10</Capacity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Introduction to AI</Name>
    <Code>3SFE599</Code>
    <Capacity>5</Capacity>
    <Semester>1</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Java Mobile Application Development</Name>
    <Code>3SFE540</Code>
    <Capacity>5</Capacity>
    <Semester>1</Semester>
    <Prerequisite>3SFE514(corequisite)</Prerequisite>
  </Module>
  <Module>
    <Name>C# .NET Programming</Name>
    <Code>3SFE541</Code>
    <Capacity>5</Capacity>
    <Semester>1</Semester>
    <Prerequisite>3SFE514(corequisite)</Prerequisite>
  </Module>
  <Module>
    <Name>Software Engineering Group Project</Name>
    <Code>3SFE515</Code>
    <Capacity>5</Capacity>
    <Semester>2</Semester>
    <Prerequisite>3SFE514(corequisite)</Prerequisite>
  </Module>
  <Module>
    <Name>Software Engineering</Name>
    <Code>3SFE519</Code>
    <Capacity>10</Capacity>
    <Semester>2</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Mobile User Interface Development</Name>
    <Code>3SFE542</Code>
    <Capacity>5</Capacity>
    <Semester>2</Semester>
    <Prerequisite>3SFE540</Prerequisite>
  </Module>
  <Module>
    <Name>Interactive Multimedia</Name>
    <Code>3MTS954</Code>
    <Capacity>5</Capacity>
    <Semester>2</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Concurrent Programming</Name>
    <Code>3SFE555</Code>
    <Capacity>5</Capacity>
    <Semester>2</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Mobile Gaming</Name>
    <Code>3SFE557</Code>
    <Capacity>10</Capacity>
    <Semester>2</Semester>
    <Prerequisite>none</Prerequisite>
  </Module>
  <Module>
    <Name>Intelligent Systems</Name>
    <Code>3SFE500</Code>
    <Capacity>10</Capacity>
    <Semester>2</Semester>
    <Prerequisite>3SFE599</Prerequisite>
  </Module>
  <Module>
    <Name>3D Graphics II</Name>
    <Code>3SFE501</Code>
    <Capacity>10</Capacity>
    <Semester>2</Semester>
    <Prerequisite>3SFE508</Prerequisite>
  </Module>
</SoftwareEngineering>

EDICIÓN FINAL: ¡Lo descubrí! Gracias a Marcin y psubsee por su ayuda y contribución. El siguiente código va en el método listbox1_selectedindexchanged

var code = from d in document.Descendants("Name")
           where d.Value == (String) listBox1.SelectedItem
           select d.Parent.Element("Code").Value;

foreach (var item in code)
{
    labelCodeNumber.Text = item.ToString();
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta