c# - 如何过滤Xdocument并返回Xdocument?

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

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

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

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

提前非常感谢。

维沙尔

最佳答案

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

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

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

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

关于c# - 如何过滤Xdocument并返回Xdocument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985555/

相关文章:

c# - join 2个查询结果orderby两个不同的值

c# - 使用 Linq 从列表中删除与属性相交的项目

c# - C# 中具有多个接口(interface)的属性可访问性

c# - 如何验证 ASPNET AJAX 安装

c# - 是否可以在 DbContext 中添加而不在 .net 核心中进行跟踪

c# - .Net 邮件重复

asp.net - 是否有在 <head> 标记内注册脚本的 System.Web.UI.ClientScriptManager 方法?

c# - 通过 Linq 找到给定对象的 2 个邻居

c# - 电子邮件格式的字符串变成超链接

c# - 如何打开带附件的默认电子邮件客户端