2011-03-24 42 views
0

我有從我的數據庫收集的頁面列表。每一頁都有一個XML字段,它看起來是這樣的:解析linq查詢中的XML

<items> 
    <item id="153"/> 
    <item id="147"/> 
</items> 

現在我只希望它指向XML中的特定標識的頁面。因此,像這樣:

var pages = GetAll().Where(p => p.XmlField //this is where i'm lost 

我想要做這樣的事情:

p.XmlField.Descendants().Where(x => x.Attribute("id") == id 

回答

1

如果你想檢查XmlField內的任何item是否有權ID:

var pages = GetAll().Where(p => p.XmlField 
           .Descendants("item") 
           .Any(x => (int) x.Attribute("id") == id)); 

或者你可能想要使用類似的東西:

var pages = from page in GetAll() 
      from item in page.XmlField.Descendants("item") 
      where (int) item.Attribute("id") == id 
      select page; 

如果XML具有相同的ID兩次,這將給你重複的頁面。