Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ to实体中仅支持LINQ无参数构造函数和初始值设定项_Linq_Entity Framework - Fatal编程技术网

LINQ to实体中仅支持LINQ无参数构造函数和初始值设定项

LINQ to实体中仅支持LINQ无参数构造函数和初始值设定项,linq,entity-framework,Linq,Entity Framework,我使用下面的查询得到一个错误,使用EF+LINQ var model = (from c in _db.Accounts let geo = new GeoCoordinate(Convert.ToDouble(c.Latitude.Value), Convert.ToDouble(c.Longitude.Value)) where ((geo.GetDistanceTo(CurrentCoord) / 1000) < 3)

我使用下面的查询得到一个错误,使用EF+LINQ

 var model = (from c in _db.Accounts
              let geo = new GeoCoordinate(Convert.ToDouble(c.Latitude.Value), Convert.ToDouble(c.Longitude.Value))
              where ((geo.GetDistanceTo(CurrentCoord) / 1000) < 3) 
              orderby c.Name
              select new CompanyVM
              {
                  Name = c.Name,
                  ... 
              }).ToList();
var模型=(来自数据库帐户中的c)
让geo=新地理坐标(Convert.ToDouble(c.Latitude.Value),Convert.ToDouble(c.Longitude.Value))
式中((地理位置GetDistanceTo(CurrentCoord)/1000)<3)
orderby c.Name
选择新公司
{
Name=c.Name,
... 
}).ToList();
运行时错误:

LINQ to实体中只支持无参数构造函数和初始值设定项


有人能解释一下失败的原因吗?

实体框架试图将LINQ查询转换为可以针对数据库执行的SQL查询。因此,您不能在查询中使用
地理坐标

即使构造函数工作,Convert.ToDouble调用也会失败,因为它也无法转换为SQL

您可能需要研究在SQL和实体框架中的使用


或者您可能想编写自己版本的(这是您LINQ查询中的
GetDistanceTo
所使用的。实体框架应该能够很好地处理数学问题。

您能建议我如何使用GeoCoordination和GetDistanceTo吗?您必须将所有数据从数据库中获取到应用程序内存,并以LINQ to Objects查询的方式运行查询。您很可能不想这样做。