gpt4 book ai didi

c# - 如何在 Entity Framework 5 的 Linq 中使用 DbGeography.Filter?

转载 作者:行者123 更新时间:2023-11-30 14:11:07 24 4
gpt4 key购买 nike

使用 Entity Framework 5 可以在 Linq 查询中使用 SQL Server Spatial 过程。

例如,使用 DbGeography 对象,您可以使用“Buffer()”方法,该方法将转换为 SQL Server 中的 STBuffer。同样,Intersects() 将转换为 STIntersects。

这是一个有效的示例查询:

  var point = DbGeography.FromText(string.Format("POINT({1} {0})", latitude, longitude), 4326);
var query = from person in persons
let region = point.Buffer(radius)
where person.Location.Intersects(region)
select person;

我想使用 Filter 可能性(因为如果准确性不是您主要关心的问题,这可以加快您的查询速度,如此处指出:http://www.pauldmendoza.com/post/SQL-Server-Filter-vs-STInterects.aspx)但是,我似乎无法在 EF5 中找到如何执行此操作。这可能吗?如果是:如何?

我正在使用 SQL Server 2008 R2。

最佳答案

问的有点太早了。我找到了这个: http://msdn.microsoft.com/en-us/library/hh673622(v=vs.110).aspx

可以这样使用:

  var point = DbGeography.FromText(string.Format("POINT({1} {0})", latitude, longitude), 4326);
var query = from person in persons
let region = point.Buffer(radius)
where SqlSpatialFunctions.Filter(person.Location, region) == true
select person;

这转化为我想要的查询。

关于c# - 如何在 Entity Framework 5 的 Linq 中使用 DbGeography.Filter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21243403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com