2010-08-03 4 views
0

Кажется, у меня проблемы с Linq для XML, я искал учебники, но ничего не говорит о том, из каких, выводов, высказываний. Я хотел бы знать, как делать инструкции foreach/if с linq, если у вас есть учебное пособие, пожалуйста, дайте мне знать. Моя проблема прямо сейчас - я хочу, чтобы определенная часть помещалась в мой XML, если в текстовом поле что-то есть.Linq to XML if/foreach с XElement

Код, очевидно, не работает, так как вы не можете использовать инструкции, связанные с моим XDocument. Любая помощь/объяснение было бы очень здорово

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

Код, который вы выложили довольно бессмысленно, и вы на самом деле не объяснить, что вы хотите сделать, или то, что вы подразумеваете под Еогеасп/если заявление. Вы можете, конечно, перебирать коллекцию с помощью foreach, а затем делать что-то условное в цикле с помощью оператора if. Однако это не имеет особого отношения к LINQ. –

+0

В следующий раз я постараюсь быть яснее, хотя все остальные, казалось, понимали, так как каждый ответ помогал мне. – Spooks

ответ

2

Почему бы не создать XDocument с частями, которые всегда есть, а затем вставлять/добавлять другие части после, где вы можете использовать обычный для или если

+1

спасибо, это Спасибо за помощь! – Spooks

2

Вы просто пытаетесь построить новый XElement когда значение текста не является пустым?

Попробуйте это:

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

благодаря этим работам, хотя для будущего я буду делать больше циклов типа foreach, в Xdocument ... если у вас есть какие-то учебники, которые были бы замечательными, так как я не могу найти хороших – Spooks

1
  1. Неплохое предложение всегда включать все эти узлы, даже если они пустые

  2. Если вы настаиваете, вы можете написать метод перечислителя, который дает непустые поля :

 

//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()); 
Смежные вопросы