我有以下代码:
_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
谢谢
你的Select()
是关闭的,你目前只是选择第一项的值,而不是这样做:
.Select(x => new Data()
{
data = x.Value
}).ToList()
你也不需要初始的null
检查-如果没有数据元素,它将只是一个0项的枚举,所以这将工作:
data = log.Elements("data").Select( x=> new Data() { data = x.Value }).ToList()