C# 基于另一个元素值选择XML元素 A. 1. B 2.

C# 基于另一个元素值选择XML元素 A. 1. B 2.,c#,xml,linq,C#,Xml,Linq,如何根据名称元素选择值元素的值 编辑:在XDocument中,当我有“a”时,如何获得值“1”。好吧,想想看 您可以轻松地读取XML文件,只要检查的内部文本是否与您的条件匹配,就可以读取标记的值 这是你可以得到的答案。好吧,想一想 您可以轻松地读取XML文件,只要检查的内部文本是否与您的条件匹配,就可以读取标记的值 这是您可以得到的答案。您可以试试这个, 可能有帮助 你可以试试这个, 可能有帮助 这应该做到: (假设doc是XDocument的一个实例) 在这种情况下,项将产生一个IEnumer

如何根据
名称
元素选择
元素的值


编辑:在XDocument中,当我有“a”时,如何获得值“1”。

好吧,想想看

您可以轻松地读取XML文件,只要检查
的内部文本是否与您的条件匹配,就可以读取
标记的值


这是你可以得到的答案。

好吧,想一想

您可以轻松地读取XML文件,只要检查
的内部文本是否与您的条件匹配,就可以读取
标记的值

这是您可以得到的答案。

您可以试试这个, 可能有帮助

你可以试试这个, 可能有帮助

这应该做到:

(假设
doc
XDocument
的一个实例)

在这种情况下,
将产生一个
IEnumerable

如果您知道您只想要一个值:

string name = "a";
var items = doc.Descendants("Sub")
               .Where(s => (string)s.Element("Name") == name)
               .Select(s => s.Element("Value").Value);
这应该做到:

(假设
doc
XDocument
的一个实例)

在这种情况下,
将产生一个
IEnumerable

如果您知道您只想要一个值:

string name = "a";
var items = doc.Descendants("Sub")
               .Where(s => (string)s.Element("Name") == name)
               .Select(s => s.Element("Value").Value);

我建议您使用强制转换节点,而不是直接访问
Value
属性:

string name = "a";
string value = doc.Descendants("Sub")
               .Where(s => (string)s.Element("Name") == name)
               .Select(s => s.Element("Value").Value)
               .FirstOrDefault();
如果缺少节点的默认值(零)不符合您的需要,则可以在获取值之前检查必需的
Sub
元素是否存在:

int value = xdoc.Descendants("Sub")
                .Where(s => (string)s.Element("Name") == "a")
                .Select(s => (int)s.Element("Value"))
                .FirstOrDefault();

或使用XPath和Linq的简单一行:

var sub = xdoc.Descendants("Sub")
              .FirstOrDefault(s => (string)s.Element("Name") == "a");

if (sub != null)            
    value = (int)sub.Element("Value");

我建议您使用强制转换节点,而不是直接访问
Value
属性:

string name = "a";
string value = doc.Descendants("Sub")
               .Where(s => (string)s.Element("Name") == name)
               .Select(s => s.Element("Value").Value)
               .FirstOrDefault();
如果缺少节点的默认值(零)不符合您的需要,则可以在获取值之前检查必需的
Sub
元素是否存在:

int value = xdoc.Descendants("Sub")
                .Where(s => (string)s.Element("Name") == "a")
                .Select(s => (int)s.Element("Value"))
                .FirstOrDefault();

或使用XPath和Linq的简单一行:

var sub = xdoc.Descendants("Sub")
              .FirstOrDefault(s => (string)s.Element("Name") == "a");

if (sub != null)            
    value = (int)sub.Element("Value");

你的确切意思是什么?你的确切意思是什么?标记为答案,因为我完全忘记了XPath,应该使用它。标记为答案,因为我完全忘记了XPath,应该使用它。