我在数据库中有一个XML列,我想以有效的方式使用Linq(toSQL)查询此XML。

MyTable.Select(e => e.XmlObject.Element("Phone").Value)


...似乎这查询数据库中的XmlObject,但在数据库外部处理Element(“ Phone”)部分?如何创建查询,以便使用本机SQL XML函数? (我想要那个吗?)

更新:使用存储过程是否会比上面使用的存储过程更快?

最佳答案

我的XML列数据存在相同的问题-当时我唯一的解决方案是获取整个XML列,转换为字符串并对其进行字符串搜索。很笨拙。

但是,我现在有了a solution I have posted on my blog:在服务器上编写一个SQLCLR函数,并将它们作为标量函数公开给LINQ to SQL-这些可以被称为LINQ查询的一部分,并将在服务器上执行。

例如:

var db = new MyDataContext();
var query = from x in db.MyTable
            where db.XmlGetElementValue(x.XmlColName, "ElementX") == "somevalue"
            select x;


XmlGetElementValue已添加到dbml的位置。

09-26 20:45
查看更多