2013-11-14 144 views
2

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

现在我需要在绑定之前过滤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,这是所需的格式作为doc.ToString()绑定到XMLDataSource。

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

非常感谢。

维沙尔

回答

4

如果你只是想创建这些内容的文件,你可以使用:

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

(这将创建一个文档与<root>根元素,所有的直接在下面感兴趣的元素。)

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

+0

感谢这似乎是工作的问题是,三次创建相同的结构。像基{System.Xml.Linq.XContainer}:宣言:空 DocumentType:空 的NodeType:文档 根: Vishal

+0

BTW条的类型是:System.Linq.Enumerable.WhereEnumerableIterator Vishal

+0

@VishalSachdeva:很难分辨出你真的有什么。如果您将整个文档*作为XML文档*转储出去会发生什么?我怀疑你刚才有3匹配的行... –