2010-08-11 4 views
0

Je suis un peu nouveau pour LINQ et je me demandais comment je peux sélectionner l'application dans le code XML suivant en fonction du nom de l'application à l'aide Méthodes d'extension (ne pas utiliser l'expression de requête)la sélection d'un élément en XML en utilisant des méthodes d'extension LINQ

<applicationlist> 
<application> 
    <name>test1</name> 
    <ele1>852</ele1 
    <ele2>http://localhost/test1</ele2> 
</application> 

<application> 
    <name>test2</name> 
    <ele1>456</ele1 
    <ele2>http://localhost/test2</ele2> 
</application> 
</applicationlist> 

Répondre

1

en supposant que par « la voie SQL de sélection » vous voulez dire « en utilisant une expression de requête », nous allons commencer avec l'expression de votre requête:

var v = from b in root.Descendants("application") 
     where b.Element("name").Value.Trim().ToLower() == appName.Trim().ToLower() 
     select b; 

avec des méthodes d'extension, ce serait tout simplement:

var v = root.Descendants("application") 
      .Where(b => b.Element("name").Value.Trim().ToLower() == 
         appName.Trim().ToLower()); 

Je ne recommanderais pas de faire des comparaisons insensible à la casse de cette façon si - il a des problèmes culturels. Utilisez quelque chose comme ceci:

var v = root.Descendants("application") 
      .Where(b => b.Element("name").Value.Trim().Equals(appName.Trim(), 
            StringComparison.CurrentCultureIgnoreCase); 

(ou l'un des autres StringComparison options - ou une instance de StringComparer).

Vous pouvez également couper appNameune fois plutôt que pour chaque comparaison ...

+0

C'est une explication merveilleuse. Merci beaucoup. Edited ma question aussi pour l'encadrer correctement. – Amit