如何过滤Xdocument并返回Xdocument?

时间:2013-11-14 18:34:05

标签: c# asp.net linq lambda linq-to-xml

我的应用程序从SharePoint Web服务获取数据(使用SOAP和CAML查询),我使用Xdocument文档存储检索到的xmlNode,然后将xdocument分配给XMLDataSource,XMLDataSource被分箱到gridView。

现在我需要在绑定之前过滤Xdocument,只选择那些元素(ows_Partner_x0020_Type)与变量匹配的记录。

我这样想:

doc = doc.Descendants(z + "row").Where(rows => rows.Attribute("ows_Partner_x0020_Type").Value == Partner_Type.SelectedValue);

var bar = doc.Descendants(z + "row").Where(rows => rows.Attribute("ows_Partner_x0020_Type").Value == Partner_Type.SelectedValue);

但问题是LINQ上面的返回类型是System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>

它不像XDocument那样退出,XDocument是以XML.SoString()的形式绑定到XMLDataSource的必需格式。

希望我能够解释这个问题。

提前多多感谢。

维沙尔

1 个答案:

答案 0 :(得分:4)

如果您只是尝试使用这些元素创建文档,则可以使用:

XDocument filteredDocument = new XDocument(new XElement("root", bar));

(这将创建一个根元素为<root>的文档,以及您直接感兴趣的所有元素。)

对所有绑定部分不太确定 - 我强烈怀疑可能有更好的选择 - 但这肯定会给你一个新的XDocument