首页 > 解决方案 > 与 SQL Server 中的几何列相交

问题描述

我有这个查询(简单的例子,不是真正的,我需要使用INTERSECT):

SELECT Id,Geo FROM Locations WHERE Id=1
INTERSECT 
SELECT Id,Geo FROM Locations WHERE Id>10

Geo 列是几何类型,当我执行此查询时,我收到此错误:

数据类型几何不能用作 UNION、INTERSECT 或 EXCEPT 运算符的操作数,因为它不可比较。

但是,如果我将属性转换为nvarchar,它可以工作:

SELECT Id, CAST(Geo AS NVARCHAR(MAX)) as Geo 
FROM Locations 
WHERE Id = 1
INTERSECT 
SELECT Id, CAST(Geo AS NVARCHAR(MAX)) as Geo 
FROM Locations 
WHERE Id > 10

关于如何使用 Linq 进行投射的任何想法IQueryable

var query1= _context.Set<Location>().Where(x => x.Id = 1);
var query2= _context.Set<Location>().Where(x => x.Id > 10);
var result= query1.Intersect(query2).ToList();

我有类似的东西,但我现在不知道如何制作属性 Geo。当我这样做时,.ToList()我得到了同样的结果SqlError

数据类型几何不能用作 UNION、INTERSECT 或 EXCEPT 运算符的操作数,因为它不可比较。

我正在使用 C# 和 Core 3.1

标签: c#sql-serverlinqasp.net-coregeometry

解决方案



推荐阅读