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 回答