在linq查询中解析XML

时间:2011-03-24 12:50:17

标签: xml linq

我有一个从我的数据库收集的页面列表。每个页面都有一个XML字段,如下所示:

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

现在我只想要指向XML中特定id的页面。所以像这样:

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

我想做这样的事情:

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

1 个答案:

答案 0 :(得分:1)

如果您想检查item中的任何 XmlField是否具有正确的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,那将为您提供重复的页面。