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

本文关键字:他们 一个对象 存在 保存 LINQ 元素 XML | 更新日期: 2023-09-27 17:50:23

我有以下代码:

   _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

谢谢

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

你的Select()是关闭的,你目前只是选择第一项的值,而不是这样做:

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

你也不需要初始的null检查-如果没有数据元素,它将只是一个0项的枚举,所以这将工作:

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