linq - 使用 linq-to-sql 和 xlinq 按 xml 列内容过滤数据库记录

标签 linq linq-to-sql linq-to-xml

我需要使用按 xml 类型的列过滤从数据库表中选择行。

表格看起来像(短版)

id
dbfield int
xmlfield xml

我用这种方式过滤它

IQueryable<Data.entity> q = from u in datacontex.entities
select u;

if (val1.HasValue)
  q = q.Where( x => x.dbfield > val1.value)

if (val2.HasValue)
  q = q.Where( x=> x.dbfield < val2.value)

if (!string.IsNullOrEmpty(searchString))
 q = q.Where ( x=> x.xmlfield contains values from searchString)

xmlfield 中的 XML 看起来很简单

<doc>
  <item id="no">test/WZ/2009/04/02</item>
  <item id="title">blabla</item>
...

问题是如何在 linq 中添加 WHERE 条件,最好将此条件转换为 ms-sql 查询,而不处理 web 服务应用程序上的数据集。

谢谢。

最佳答案

据我所知,LINQ-to-SQL 不支持 TSQL 中的 xml 扩展。我看到的两个选择:

  • 为使用 sql/xml 语法的整个查询编写一个 SPROC/udf,并将其映射到您的数据上下文
  • 编写一个 UDF 来对单行进行测试(返回 bool 值),将其映射到数据上下文,然后使用 ctx.SomeUdf(row)where LINQ 的子句

关于linq - 使用 linq-to-sql 和 xlinq 按 xml 列内容过滤数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1741284/

相关文章:

c# - 将 DatagridView 与 Linq to SQL 一起使用的最简单方法

c# - 如何在不破坏订单的情况下进行 GROUP BY?

C# - XDocument/对象的链接

c# - 从单个嵌套 XElement 检索值的正确方法是什么?

c# - 使用 Newtonsoft.Json 解析 JSON 时出错

LINQ - 使用 distinct 和 orderby 编写查询

c# - 我如何通过 Linq 实现它?

asp.net-mvc - 使用 asp.net mvc 和 linq to sql 验证唯一键?

c# - LINQ 到 XML : Ignoring of the case of attributes

c# - 如何将 SQL 中的多个内部联接转换为 LINQ?