2009-07-30 67 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