2011-04-15 58 views
1

我有以下代碼:C#XML到LINQ多個元素具有相同的名稱,如何讓他們在同一個對象保存

_logs.AddRange(elements 
        .Select(log => new Log() 
         { 
          tid = (log.Element("tid") == null) ? "" : log.Element("tid").Value, 
          zid = (log.Element("zid") == null) ? "" : log.Element("zid").Value, 
          create = (log.Element("create") == null) ? "" : log.Element("create").Value, 
          data = (log.Element("data") == null) ? null : log.Elements("data") 
          .Select(x => new Data() 
          { 
           data = (log.Element("data") == null) ? "" : log.Element("data").Value 

          }).ToList() 
         })); 

數據元素多次表明了每個對象。爲什麼當它讀取這些對象時,它顯示x具有正確的數據,但是當我查看_log時,它只顯示第一個值。

例如,如果數據是這樣的:

<data>1</data> 
<data>2</data> 
<data>3</data> 

所以那麼數據列表將顯示[0] = 1,[1] = 1,[2] = 1

由於

回答

1

Select()是關閉的,你現在只是選擇第一項的值全部結束,而不是這樣做:

.Select(x => new Data() 
{ 
    data = x.Value 
}).ToList() 

你也不需要最初的null檢查 - 如果沒有數據元素它將只是一個枚舉零項,所以這將工作:

data = log.Elements("data").Select(x=> new Data() { data = x.Value }).ToList() 
相關問題