如何使用 LINQ to SQL 查询具有 XML 数据类型列作为 IQueryable 的表?
SQL Server 表:
Id [int]
SomeData [xml]
SomeData 的一个示例可能是:
<container><Person>Joe Smith</person></container>
在 T-SQL 中,我可以像这样查询表来查找具有特定姓名的员工:
SELECT
*
FROM
[MyTable]
WHERE
SomeData.value('(//*[local-name()="Person"])[1]', 'varchar(max)') = 'Joe Smith'
或者将 xml 视为字符串,无论 xml 架构如何都搜索字符串:
SELECT
*
FROM
[MyTable]
WHERE
CONVERT(varchar(max), SomeData) like '%Joe Smith%'
现在我转向 LINQ to SQL,并希望执行第二个查询:
var myTable = db.MyTable.Where(x => x.SomeData.Value.Contains("Joe Smith"));
我得到错误:
"The member 'System.Xml.Linq.XElement.Value' has no supported translation to SQL.
我明白为什么我会收到错误,但是有没有办法解决它?
在这种情况下,能够将列作为字符串查询(没有 xml 结构的概念)是完全可以的。