C#XML到LINQ具有相同名称的多个元素,如何让它们保存在同一个对象中

时间:2011-04-15 21:04:48

标签: 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,但是当我查看_logs时,它只显示第一个值。

例如,如果数据如下所示:

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

那么数据列表会显示[0] = 1,[1] = 1,[2] = 1

由于

1 个答案:

答案 0 :(得分:1)

您的Select()已关闭,您目前只是选择全部第一项的值,而是执行此操作:

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

此外,您不需要初始null检查 - 如果没有数据元素,它将只是一个零项目的枚举,所以这将起作用:

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