c# - 与 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
解决方案
也许您可以在 Geometry 类上实现 IComparer 接口。 https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.icomparer-1?view=netframework-4.8
推荐阅读
- php - 在 XML 响应 php 中解析 JSON
- google-bigquery - 在 bigquery 的同一列上应用不同的条件
- java - spring boot 编译找不到符号componentscan
- unity3d - Unity中的浮动原点和视觉效果图
- gitlab-ci - gitlab ci:作业工件的“没有要上传的文件”
- python - 我的 Scrapy 脚本非常慢,在 3 分钟内提取 100 个项目
- python - 手动触发 dag 后气流调度程序不起作用
- javascript - 将 onclick 从屏幕 1 导航到屏幕 2 并运行特定组件
- python - 如何在 Django REST 框架中进行条件验证?
- spring-boot - MapStruct 1.3.0.Beta2 将 DTO 传递给qualifiedByName 方法