Insert a column into varbinary (max) that Linq to SQL can handle. One way to avoid this in every query is to simply add a calculated column defined as CAST(GeographyColumn AS varbinary(max)).
Once you have the data byte[], you can write a short utility method to convert it to an actual class Microsoft.SqlServer.Types.SqlGeographyusing the MemoryStreamand methods IBinarySerialize. Read/ Write.
As far as I know, this is the only working solution if you need to work with any type of CLR, including geography, geometry, hierarchy and any custom types. Linq does not "support" any of them. It's a bit of a pain to write all the boilerplate code, but you can simplify it with a few extension methods.
; , , Linq Dynamic Query Library. intellisense Linq, - , , , , .
: . ; SqlGeography STGeomFromWKB SqlBytes. .