使用linq to sql和xlinq按xml列内容筛选数据库记录
我需要使用按xml类型列过滤从数据库表中选择行 表看起来像(短版本) 我用这种方式过滤它使用linq to sql和xlinq按xml列内容筛选数据库记录,linq,linq-to-sql,linq-to-xml,Linq,Linq To Sql,Linq To Xml,我需要使用按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
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)
IQueryable q=来自datacontex.entities中的u
选择u;
if(val1.HasValue)
q=q.Where(x=>x.dbfield>val1.value)
if(val2.HasValue)
q=q.Where(x=>x.dbfieldx.xmlfield包含来自searchString的值)
xmlfield中的XML看起来非常简单
<doc>
<item id="no">test/WZ/2009/04/02</item>
<item id="title">blabla</item>
...
测试/WZ/2009/04/02
布拉布拉
...
问题是如何在linq中添加WHERE条件,最好将该条件转换为ms sql查询,而无需在webservice应用程序上处理数据集
谢谢。LINQ to SQL不支持TSQL中的xml扩展。我看到两个选择:
- 为使用sql/xml语法的整个查询编写存储过程/udf,并将其映射到数据上下文
- 编写一个UDF,用于测试单行(返回bool),将其映射到数据上下文,并在LINQ的
子句中使用where
ctx.SomeUdf(row)
<doc>
<item id="no">test/WZ/2009/04/02</item>
<item id="title">blabla</item>
...