如何在属性中选择XElements ...(LINQ2XML)

Mar*_*der 3 xml linq

如何在Linq中选择id == id && key == key的值

XML:

<Localization>    
  <Module id="Customers">
    <CultureCode>de-DE</CultureCode>
    <Key>General</Key>
    <Value>Allgemeine Kunden</Value>
  </Module>     
  <Module id="Contract">
    <CultureCode>de-DE</CultureCode>
    <Key>General</Key>
    <Value>Allgemeine Verträge</Value>
  </Module>     
</localization>
Run Code Online (Sandbox Code Playgroud)

这是我的方法

methode(字符串模块,字符串键)...

var value = (from l in localization.Elements("Localization").Elements("Module")
             where l.Attribute("id").Equals(module) && l.Element("Key").Value.Equals(key)
             select l.Element("Value").Value);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

假设module是一个字符串,问题是你要比较的XAttribute一个string.

这是查询的固定版本:

var value = (from l in localization.Elements("Localization").Elements("Module")
             where (string) l.Attribute("id") == module && 
                   l.Element("Key").Value == key
             select l.Element("Value").Value);
Run Code Online (Sandbox Code Playgroud)

请注意,我正在转换XAttribute为字符串而不是使用Value属性,因此如果该id属性不存在,它将不匹配而不是炸毁.

如果你想要一个值,你应该叫Single,First,SingleOrDefaultFirstOrDefault在这取决于你想要什么语义的结果.