2010-08-03 7 views
0

Il me semble que j'ai un peu de mal avec Linq en XML, j'ai cherché des tutoriels, mais rien ne me parle vraiment des instructions select, select. Je voudrais savoir comment faire des instructions foreach/if avec linq, si vous avez un tutoriel s'il vous plaît faites le moi savoir. Mon problème maintenant est que je veux seulement une certaine partie mis dans mon XML si la zone de texte a quelque chose dedans.Linq to XML if/foreach avec XElement

Le code ne fonctionne évidemment pas car vous ne pouvez pas mettre des instructions if avec mon document XDocument. Toute aide/explication serait très grande

if(txtPr3_Chain.Text != "") 
          { 
         new XElement("Property_Info", 
          new XAttribute("Chain", txtPr3_Chain.Text), 
         new XElement("City" ,txtPr3_City.Text), 
         new XElement("AdRating" ,AdRating3.CurrentRating.ToString()), 
         new XElement("YourRating" ,YourRating3.CurrentRating.ToString()), 
         new XElement("Comment" ,txtPr3_Comments.Text)), 
          } 
+0

Le code que vous avez posté est assez vide de sens et vous n'explique pas vraiment ce que vous voulez faire ou ce que vous entendez par un foreach/instruction if. Vous pouvez certainement parcourir une collection en utilisant foreach, puis faire quelque chose de conditionnel dans la boucle en utilisant une instruction if. Cela n'a pas grand chose à voir avec LINQ. –

+0

Je vais essayer d'être plus clair la prochaine fois, même si tout le monde semblait comprendre, car chaque réponse m'a aidé. – Spooks

Répondre

2

Pourquoi ne pas créer le XDocument avec les pièces qui sont toujours là et puis insérez/append les autres parties après, où vous pouvez utiliser régulièrement pour ou si

+1

merci, ce travaillé avec le combo de la première réponse, merci! – Spooks

2

Vous essayez simplement de construire une nouvelle XElement lorsque la valeur de textes ne sont pas vide?

Essayez ceci:

XElement element = null; 
if (txtPr3_Chain.Text != "") 
{ 
    element = new XElement("Property_Info", 
          new XAttribute("Chain", txtPr3_Chain.Text), 
          new XElement("City", txtPr3_City.Text), 
          new XElement("AdRating", AdRating3.CurrentRating.ToString()), 
          new XElement("YourRating", YourRating3.CurrentRating.ToString()), 
          new XElement("Comment", txtPr3_Comments.Text)); 
} 
+1

Merci pour ce travail, mais pour le futur, je ferai plus de boucles de type foreach, dans le Xdocument ... si vous avez des tutoriels qui seraient super, comme je ne peux pas trouver de bons – Spooks

1
  1. Il est pas une mauvaise idée d'inclure toujours tous ces nœuds, même quand ils sont vides

  2. Si vous insistez, vous pouvez écrire un recenseur méthode qui donne des champs non vides :

 

//untested 
IEnumerable<Xelement> GetFields() 
{ 
    if (txtPr3_City.Text != null) 
     yield return new Xelement("City",txtPr3_City.Text); 
    ....  
} 


element = new XElement("Property_Info", 
       new XAttribute("Chain", txtPr3_Chain.Text), 
       GetFields());