Varlık Çerçevesinde Mekansal Birleşim

Dbgeography'nin "Intersect" yöntemini kullanarak LINQ'da bir katılma bildirimi yazmak istiyorum (EF Haziran 2011 CTP kullanıyorum). Sorun şu ki böyle bir şey yazsam:

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

Aşağıdaki hatayı alıyorum:

'mnQ' adı, 'equals' sol tarafında değildir. Düşünmek   ifadeleri, "eşittir" in her iki tarafında da değiştirir.

SQL'de aşağıdaki gibi benzer bir sorgu yazdım, bu yüzden SQL suppports'u biliyorum:

SELECT  * FROM   Address a 
INNER JOIN  SPATIALTABLE b
WITH(INDEX(geog_sidx))
ON b.geom.STIntersects(a.PointGeography) = 1
4
Bir join cümlesi kullanmak yerine Where where (ala SQL-82) içinde deneyebilir misiniz? Birleşim tümcesi bir birleştirme uzantısı yöntemine dönüşür ve mnQ sol taraftaki seçicide bir girdi parametresi değildir.
katma yazar Jim Wooley, kaynak

1 cevap

Böyle bir şey deneyin:

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