1

LINQ クエリを使用して最寄りの場所を取得しようとしています。

var coord = new GeoCoordinate(loc.Latitude, loc.Longitude);
var nearest = ctx.Locations
                 .Select(x => new LocationResult {
                     location = x,
                     coord = new GeoCoordinate(x.Latitude.GetValueOrDefault(),
                                               x.Longitude.GetValueOrDefault())
                 })
                 .OrderBy(x => x.coord.GetDistanceTo(coord))
                 .First();

return nearest.location.Id; 

ただし、次のエラーが発生します。

LINQ to Entities では、パラメーターなしのコンストラクターと初期化子のみがサポートされています。

これをグーグルで試してみましたが、まだ修正方法がわかりません。パラメーターなしのコンストラクターとは

4

2 に答える 2

2

代わりにこれを試す必要があります:

var coord = new GeoCoordinate(loc.Latitude, loc.Longitude);
                var nearest = ctx.Locations
                    .Select(x => new LocationResult {
                        location = x,
                        coord = new GeoCoordinate { Latitude = x.Latitude ?? 0, Longitude = x.Longitude ?? 0 }
                    })
                    .OrderBy(x => x.coord.GetDistanceTo(coord))
                    .First();

                return nearest.location.Id; 
于 2013-07-25T13:54:10.630 に答える
0

問題はこの行です

new GeoCoordinate(x.Latitude.GetValueOrDefault(), x.Longitude.GetValueOrDefault())

これは、GeoCoordiante クラスのコンストラクターがいくつかのパラメーターで呼び出されるため、パラメーターを持つコンストラクターを使用しています。

パラメーターなしのコンストラクターは、パラメーターを取らない型のコンストラクターです。

于 2013-07-25T13:52:38.793 に答える