2011-10-27 58 views
4

我想在LINQ中使用dbgeography的“Intersects”方法(我正在使用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 suppports它:

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

您可以在Where子句(ala SQL-82)中尝试它,而不是使用连接子句吗? join子句转换为Join扩展方法,mnQ不是左侧选择器上的输入参数。 –

回答

1

尝试这样:

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