2010-08-03 2 views
0

Linq에서 XML로 문제가있는 것 같아요, 자습서를 찾았지만 실제로는 select, statement에 관해서는 아무것도 알 수 없습니다. 내가 linq와 foreach/if 문을 수행하는 방법을 알고 싶습니다. 튜토리얼을 가지고 있다면 알려주세요. 내 문제는 지금은 텍스트 상자에 뭔가가있는 경우에만 특정 부분을 내 XML에 넣기를 원합니다.Linq to XML if/foreach with XElement

내 XDocument가있는 if 문을 넣을 수 없으므로 코드가 분명히 작동하지 않습니다. 어떤 도움/설명은 텍스트 값이 비어 있지 때 단순히 새로운 XElement을 구축하려고하고 있습니까

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 문. foreach를 사용하여 컬렉션을 반복 할 수 있고 if 문을 사용하여 루프 내에서 조건부를 수행 할 수 있습니다. LINQ와는별로 관련이 없습니다. –

+0

다음 번에 더 명확 해 지려고 노력할 것입니다.하지만 다른 사람들이 나를 도왔을 때마다 다른 사람들이 이해하는 것 같았습니다. – Spooks

답변

2

이 왜 삽입 후 항상있는 부분으로하여 XDocument를 생성하지/후 다른 부분은, 당신이 나

+1

감사합니다. 첫 번째 답변, 감사의 콤보와 함께 일했다! – Spooks

2

아주 좋은 것?

이 시도 :

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

Xadocument 내에서 미래에 대해 더 많은 foreach 유형 루프를 수행해 주셔서 감사합니다 ... 좋은 팁을 찾을 수없는 자습서가 있다면 – 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());