【问题标题】:Load all values from xml into list of tuple将 xml 中的所有值加载到元组列表中
【发布时间】:2017-11-10 15:28:10
【问题描述】:

在我的 xml 中,每个记录标签都有两个元素,例如 id1id2

我想加载所有记录的id1id2,并将所有id1 保存在item1 中,并将所有id2 保存在item2 中的元组列表中

我想要这样的东西

var tuples = doc.Root.Descendants("record").Select(p => new 
Tuple<int,int>(p.Element("id1").Value,p.Element("id2").Value));

但这仅适用于元组的一个对象,但我想保存在 整数元组列表

【问题讨论】:

  • But this is applicable for only Tuple but I want to save in List&gt; - 这是什么意思?
  • 抱歉错过了一些文本,实际上上面的逻辑仅适用于我想保存在整数元组列表中的一个元组对象。
  • 你能分享一个示例 XML 吗?
  • 我相信您的 var tuples 将是 IEnumerable&lt;Tuple&lt;int,int&gt;&gt; 类型,在这种情况下,您只需在末尾附加 .ToList() 即可将结果捕获到列表中。
  • 111记录>

标签: c# xml linq


【解决方案1】:

假设您有以下 XML:

var xmlStr = "<records><record><id1>1</id1><id2>1</id2></record><record><id1>1</id1><id2>2</id2></record><record><id1>3</id1><id2>3</id2></record></records>";

您发布的代码应该可以正常工作,唯一缺少的是您没有将.Value 的字符串解析为int

XDocument xDoc = XDocument.Parse(xmlStr);
var tuples = xDoc.Root.Descendants("record").Select(x => new Tuple<int, int>(int.Parse(x.Element("id1").Value), int.Parse(x.Element("id2").Value))).ToList();

按照我在 cmets 中的建议,我包含了 .ToList(),以创建 List&lt;Tuple&lt;int, int&gt;&gt; 而不是 IEnumerable&lt;Tuple&lt;int, int&gt;&gt;

【讨论】:

  • 知道了,我真的很困惑。谢谢
  • @Remon 没问题。
猜你喜欢
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多