我有以下编码:
_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
由于
答案 0 :(得分:1)
您的Select()
已关闭,您目前只是选择全部第一项的值,而是执行此操作:
.Select(x => new Data()
{
data = x.Value
}).ToList()
此外,您不需要初始null
检查 - 如果没有数据元素,它将只是一个零项目的枚举,所以这将起作用:
data = log.Elements("data").Select( x=> new Data() { data = x.Value }).ToList()