Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LinqToSql中的Xml查询_C#_Xml_Linq To Sql - Fatal编程技术网

C# LinqToSql中的Xml查询

C# LinqToSql中的Xml查询,c#,xml,linq-to-sql,C#,Xml,Linq To Sql,我在数据库中有一个XML列,我想用Linq(toSQL)高效地查询这个XML MyTable.Select(e => e.XmlObject.Element("Phone").Value) 。。。这似乎是在数据库中查询XmlObject,但进程元素(“Phone”)部分在数据库之外?如何创建查询以便使用本机SQL XML函数?(我想要吗?) 更新:使用存储过程是否比上述替代方法更快?LINQ to SQL提供程序不支持将C#表达式转换为SQL Server XQuery 您必须将普通的旧

我在数据库中有一个XML列,我想用Linq(toSQL)高效地查询这个XML

MyTable.Select(e => e.XmlObject.Element("Phone").Value)
。。。这似乎是在数据库中查询XmlObject,但进程元素(“Phone”)部分在数据库之外?如何创建查询以便使用本机SQL XML函数?(我想要吗?)


更新:使用存储过程是否比上述替代方法更快?

LINQ to SQL提供程序不支持将C#表达式转换为SQL Server XQuery


您必须将普通的旧ADO.NET与基于字符串的查询(存储过程或代码中的参数化命令文本查询)结合使用,才能获得所需的结果。

我的XML列数据也有同样的问题-当时唯一的解决方案是获取整个XML列,转换为字符串并对其执行字符串搜索。非常笨拙

但是我现在有了:在服务器上编写一个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。

我认为Linq2Sql不支持本机SQL XML函数,但我可能错了。您认为您可以通过存储过程解决它。。。