2009-07-30 76 views
3

我怎样才能选择Value其中id = = ID & &键== LINQ的关键如何选择XElements其中属性...(LINQ2XML)

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> 

这是我的接近

梅索德(string模块,串键)...

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); 

回答

7

ASSU明module是一个字符串,问题是你在比较XAttributestring

下面是查询的一个固定的版本:

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); 

请注意,我铸造XAttribute字符串,而不是使用Value属性,因此,如果id属性不存在,它只是不匹配而不是炸毁。

如果你想要一个值,你应该叫上取决于你想要什么语义结果SingleFirstSingleOrDefaultFirstOrDefault

+0

thx!这对我来说工作得很好,我对“localization.Elements(”Localization“)。Elements(”Module“)也有问题,我将其更改为:localization.Elements(),现在可以工作:) – 2009-07-30 13:42:43