【问题标题】:c# xml -> dictionary <string, Tuple<string,string,string>> in Linqc# xml -> Linq 中的字典 <string, Tuple<string,string,string>>
【发布时间】:2015-06-25 18:55:36
【问题描述】:

我有这个 XML 文档

<?xml version="1.0" encoding="utf-8"?>
<Tag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <data ID="1" Tag1="A" Tag2="123" Tag3="C" />
  <data ID="2" Tag1="AB" Tag2="12C3" Tag3="D" />
</Tag>

我想把文档转换成字典类型&lt;string, Tuple&lt;string,string,string&gt;&gt;

所以基本上是 ID -> Tag1, Tag2, Tag3

我知道有很多这样的 Key -> Value:

var configDictionary = xdoc.Descendants("data").ToDictionary(
            datum => datum.Attribute("ID").Value,
            datum => datum.Attribute("value").Value);

但我需要将值包含在 3 个字符串中。

【问题讨论】:

  • 所以在第二个 lambda 表达式中,从三个属性创建一个Tuple&lt;string, string, string&gt;,而不是仅仅一个字符串。你在这方面做了什么尝试,发生了什么?

标签: c# xml linq dictionary


【解决方案1】:

这很简单。您所缺少的只是使用Tuple.Create 声明元组:

var configDictionary = xdoc.Descendants("data")
             .ToDictionary(
                   datum => datum.Attribute("ID").Value,
                   datum => Tuple.Create(datum.Attribute("Tag1").Value,
                                         datum.Attribute("Tag2").Value,
                                         datum.Attribute("Tag3").Value));

请注意,这没有验证属性是否实际存在,需要添加。

【讨论】:

  • 太棒了!这就是我一直在寻找的。谢谢!
猜你喜欢
  • 2019-02-18
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多