Пространственное соединение в Entity Framework - PullRequest
4 голосов
/ 28 октября 2011

Я хочу написать оператор соединения в 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

Я получаю следующую ошибку:

Имя 'mnQ' не находится в области видимости слева от 'equals'. Рассматривать поменять местами выражения с обеих сторон «равно».

В SQL я написал запрос, аналогичный приведенному ниже, поэтому я знаю, что SQL поддерживает его:

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

1 Ответ

1 голос
/ 19 июня 2013

Попробуйте что-то вроде этого:

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