Linq to XML, если / foreach с XElement - PullRequest
       29

Linq to XML, если / foreach с XElement

0 голосов
/ 03 августа 2010

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

Код, очевидно, не работает, так как вы не можете поместить операторы if в мой 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)),
                            }

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

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

2 голосов
/ 03 августа 2010

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

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

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 голос
/ 03 августа 2010
  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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...