2012-05-28 103 views
1

我有像下面麻煩中解析在c#使用LINQ

public class accountlist 
     { 
      public string lvl1 { get; set; } 
      public List<string> b { get; set; }     
     } 

List<accountlist> questions = (from c in xmlDoc.Descendants("rootnode") 
              select new accountlist 
             { 
              lvl1 = c.Element("rootnode").Value, 
              b = (from q in c.Descendants("lvl2").Elements("b").Elements("a") where q.Element("a").Value == "0" 
                  select q.Value).ToList(), 
             }).ToList(); 

<rootnode> 

<lvl1>AIT</lvl1> 

<lvl2> 
<a>0</a> 
<b> 111</b> 
</lvl2> 

</rootnode> 

XML解析代碼的XML的XML元素我的輸出應該是這樣的

lvl1 = AIT 
b = 111 

請幫幫我......

回答

1

嘗試以下查詢。

var doc = XElement.Parse(@"<rootnode><lvl1>AIT</lvl1><lvl2><a>0</a><b> 111</b> </lvl2></rootnode>"); 

    var questions = from c in doc.DescendantsAndSelf("rootnode") 
        select new accountlist 
           { 
            lvl1 = c.Element("lvl1").Value, 
            b = (from q in c.Descendants("lvl2") where q.Element("a").Value == "0" 
                select q.Element("b").Value).ToList() 
           }; 

看起來你會得到B的清單在結果集中,如果你需要LVL1的簡單價值和b然後

var question2 = from c in doc.DescendantsAndSelf("rootnode") 
          select new 
          { 
           lvl1 = c.Element("lvl1").Value, 
           b = c.Descendants("lvl2").Elements("b").FirstOrDefault().Value 
          }; 
+0

@HabibOSU:它工作正常,謝謝你的朋友。 ... – Raj

+0

不客氣Raj – Habib