2010-06-25 3 views
1

Comment puis-je utiliser LINQ pour récupérer une valeur spécifique de Attribut pris en charge dans la condition URL = "localhoist"? Je vous remercie.Une question LINQ avec XML

<SomeSetting> 
    <Setting URL="abc.com" Supported="sb.new,mgrsma" /> 
    <Setting URL="localhost" Supported="GG,LLmgrsma,FF1,FF3" /> 
    <Setting URL="def.zxy.com" Supported="xyz" /> 
</SomeSetting> 

Répondre

4

Comme ceci:

var localhost = doc.Descendants("Setting") 
        .Where(x => (string) x.Attribute("URL") == "localhost") 
        .Select(x => (string) x.Attribute("Supported")) 
        .FirstOrDefault(); 

Une ligne à la fois:

  • d'abord sélectionner tous les éléments "Réglage"; vous pouvez également le faire en utilisant someSetting.Elements("Setting")someSetting est l'élément SomeSetting
  • Ajoutez une clause where pour filtrer les éléments qui n'ont pas d'URL de localhost. J'utilise la conversion de chaîne explicite plutôt que la propriété Value pour qu'il gère les éléments sans l'attribut URL; dans ce cas la conversion renverra null
  • Sélectionnez la valeur d'attribut Supported - à nouveau, cela renverra null si un élément URL=localhost n'a aucun attribut Supported.
  • Sélectionnez le premier résultat ou la valeur null s'il n'y a pas eu de résultats. Si vous pouvez avoir plusieurs éléments et que vous voulez tous les examiner, supprimez simplement cet appel.