sql - Entity Framework 中的空间连接

标签 sql sql-server linq entity-framework spatial

我想使用 dbgeography 的“Intersects”方法在 LINQ 中编写连接语句(我使用的是 EF June 2011 CTP)。问题是如果我写这样的东西:

var joinQuery = from spQ in spatialTableQuery
                    join mnQ in MainQuery
                    on spQ.Polygon.Intersects(mnQ.PointGeography) equals 1

我收到以下错误:

The name 'mnQ' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.

在 SQL 中,我编写了一个类似的查询,如下所示,因此我知道 SQL 支持它:

SELECT  * FROM   Address a 
INNER JOIN  SPATIALTABLE b
WITH(INDEX(geog_sidx))
ON b.geom.STIntersects(a.PointGeography) = 1

最佳答案

尝试这样的事情:

var joinQuery = 
   from spQ in spatialTableQuery
   from mnQ in MainQuery
   where spQ.Polygon.Intersects(mnQ.PointGeography) = 1

关于sql - Entity Framework 中的空间连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922005/

相关文章:

sql-server - 在oracle中使用sql server表创建表

c# - LINQ SELECT 中的 IF 语句包含列

c# - 按降序对数组进行排序的更好方法

c# - 使用 LINQ 从列表中选择项目,其中子项包含另一个列表中的项目

mysql - 如何获取table1的所有列和table2的属于table1的所有行?

sql - 数据类型 text 不能用作 UNION、INTERSECT 或 EXCEPT 运算符的操作数,因为它不具有可比性

sql-server - 最快的 SQL Server 协议(protocol)?

简单表的SQL查询

mysql - SQL 查询选择除 'ignore_table' 中定义的记录之外的整个表

php - SQL Where NOT Exists 插入