C#, Linq to XML ajouter, mettre à jour, supprimer

J'ai ce code

        XElement newClient= new XElement("Client",
            new XElement("Name", cmbClient.Text),
            new XElement("Service",
                new XElement("ServName", cmbService.Text)));
        xmlDoc.Add(newClient);
        xmlDoc.Save("Settings.xml");

Qui crée cette

<?xml version="1.0" encoding="utf-8"?>
<Clients>
  <Client>
    <Name>Client Name</Name>
    <Services>
      <ServName>Service Name</ServName>
    </Services>
  </Client>
</Clients>

Si j'appuyez de nouveau sur Button1, puis Il va créer un autre Client de la section, c'est OK, mais ce que je veux, c'est:

  1. Créer un nouveau Client de la section si elle ne pas existe.
  2. Si le Client existe, alors ajouter un Nomserveur, au lieu de les remplacer
    ce qui est déjà le cas.
  3. Si un service existe déjà sur un client, puis ne rien faire, car il existe déjà.

La moindre idée? Je commence avec linq to xml... merci des conseils!

EDIT: la Solution fournie par mixin réponses de Dmitry Dovgopoly et Leon Newswanger merci à vous deux! 😀

XDocument xDoc = XDocument.Load("Settings.xml");
var Clients =
    from client in xDoc.Root.Elements("Client")
    where client.Element("Name").Value == cmbClient.Text
    select client;
if (Clients.Count() > 0)
{
    var Client =
        (from client in xDoc.Root.Elements("Client")
        where client.Element("Name").Value == cmbClient.Text
        select client).Single();
            if (Client.Element("Services").Elements().Count(el => el.Value == cmbService.Text) == 0)
            {
                Client.Element("Services").Add(new XElement("ServName", cmbService.Text));
            }
}
else
{
    XElement newClient = new XElement("Client",
        new XElement("Name", cmbClient.Text),
        new XElement("Services",
            new XElement("ServName", cmbService.Text)));
    xDoc.Root.Add(newClient);
}
xDoc.Save("Settings.xml");
qu'est-ce que xmlDoc?
XElement xmlDoc = XElement.Load("settings.xml");

OriginalL'auteur Robert W. Hunter | 2012-11-08