我们可以将位置 SQL 转换为 C# LINQ 吗?

     2023-03-31     270

关键词:

【中文标题】我们可以将位置 SQL 转换为 C# LINQ 吗?【英文标题】:Can we Convert location SQL to C# LINQ? 【发布时间】:2021-08-26 03:01:27 【问题描述】:

这是一个返回 30 英里半径内的用户列表的 SQL 语句

SELECT
    id, (
      3959 * acos (
      cos ( radians(78.3232) )
      * cos( radians( lat ) )
      * cos( radians( lng ) - radians(65.3234) )
      + sin ( radians(78.3232) )
      * sin( radians( lat ) )
    )
) AS distance
FROM users
HAVING distance < 30
ORDER BY distance

我正在使用 C# .NET Web API2,是否可以将上面的内容转换为 LINQ 语句,以便我们可以让 API 获取这些数据?

【问题讨论】:

根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。 没有什么能阻止你使用 dapper 和直接使用你的 sql LINQPad 可能 此查询无法编译:HAVING 应该是 WHERE,或者应该是 GROUP BY id, lat, lng。此外,除非distance 存在于表中,否则它需要APPLY 或派生表 你可以在你的 api 后面使用实体框架。然后你可以只使用 linq 来表示那个 sql 语句。有很多关于如何添加实体框架的教程。 【参考方案1】:

首先你需要为弧度定义这个方法

    public static double Radians(double angle)
    
        return (Math.PI / 180) * angle;
    

现在,您可以使用此查询

        var distances = users
            .Where(x => x.YourFilterOnPagination)
            .ToList() // your collection most be List 
            .Select(x => new
            
                id = x.id,
                distance = (395 * Math.Acos(Math.Cos(Radians(78.3232)) *
                            Math.Cos(Radians(x.lat)) * Math.Cos(Radians(x.lat) - Radians(65.3234)) +
                            Math.Sin(Radians(78.3232)) *
                            Math.Sin(Radians(x.lat))))
            )
            .Where(d => d.distance < 30)
            .OrderBy(d => d.distance);

YourFilterOnPagination:如果您的数据很大,您可以将其限制在 w

【讨论】:

就像一个魅力,我相信第一个 x.lat 应该是 x.long,在我做出这个改变之后,它就像一个魅力!再次感谢您!

C# 将带有 Case 语句的 SQL 查询转换为 LINQ

...列的结果取决于其他2个列的结果。我进行了更新,以便可以用信息填充现有行,但我还想将case语句转换为我的代码的LINQ查询。UPDATEdepotProjet.ProjetsSETIdPlatefo 查看详情

使用相同的 SQL 生成输出将 T-SQL 转换为 Fluent Linq C#

...用户设置每个线程的最后阅读日期时间。如果需要,我还可以通过Forums和Universes以及聚合来查看这些日期。如果所有线程都是Read,则论坛被 查看详情

将 T-SQL string_agg 转换为 LINQ C#

】将T-SQLstring_agg转换为LINQC#【英文标题】:ConvertingT-SQLstring_aggtoLINQC#【发布时间】:2020-01-3115:41:37【问题描述】:我正在尝试将我的T-SQL查询转换为LINQ。我的查询:SELECTl.Id,s.SystemSerial,v.LicenseVersion,l.CreatedDate,STRING_AGG(sf.[Name],\',\')... 查看详情

将 Oracle SQL 转换为 LLBLGEN LINQ 表达式 C#

】将OracleSQL转换为LLBLGENLINQ表达式C#【英文标题】:ConvertingOracleSQLtoLLBLGENLINQexpressionC#【发布时间】:2020-04-2718:31:13【问题描述】:我有一个包含1个表的数据库:APP_ID|SETTING_NAME|SETTING_VALUE|ROW_LST_UPD_TS1|ab1|111|17:321|ab2|112|17:32-----------... 查看详情

如何使用 SUM 计算将 SQL 转换为 Linq

...lculation【发布时间】:2020-04-2801:52:27【问题描述】:有人可以帮我将SQL转换为Linq吗?我是Linq的新手,需要一些帮助....我的SQL查询字符串是;SELECT*,Sum(RequisitionQTY*RequisitionPrice)asTotalFROMpartrequisition 查看详情

C#,Linq2Sql:是不是可以将两个可查询对象合并为一个?

】C#,Linq2Sql:是不是可以将两个可查询对象合并为一个?【英文标题】:C#,Linq2Sql:Isitpossibletoconcatenatetwoqueryablesintoone?C#,Linq2Sql:是否可以将两个可查询对象合并为一个?【发布时间】:2010-10-0820:28:50【问题描述】:我有一个可... 查看详情

在 C# 中将 SQL 查询转换为 LINQ 方法语法

...】:我想从4个相互关联的表中获取数据。场景:一个人可以借出属于某个程序的设备DatabaseTablesperson->PersonsDatabaseTabledeviceloan->LoanDatabaseTabledevice-&g 查看详情

如何将此 SQL 内部联接查询转换为 LINQ 语法?

】如何将此SQL内部联接查询转换为LINQ语法?【英文标题】:HowdoIconvertthisSQLinnerjoinqueryintoLINQsyntax?【发布时间】:2013-01-0219:54:23【问题描述】:我对LINQ不是很熟悉。我需要将此查询转换为LINQ语句,以便在我的C#项目中使用。谢谢... 查看详情

将 SQL 子查询转换为 Linq 查询

】将SQL子查询转换为Linq查询【英文标题】:ConvertingaSQLsubqueriestoLinqquery【发布时间】:2016-04-2013:55:11【问题描述】:我正在尝试将此sql转换为Linq查询,但没有成功。你能帮忙吗?SELECTG.Id,G.UserGroupName,G.Status,G.IsDeleted,(SELECTCOUNT(*)FR... 查看详情

将 SQL CASE WHEN 语句转换为 C#

...我正在运行SQL语句,我不知道如何转换。在我的C#类中,我们没有将SQL语 查看详情

将sql代码转换为linq(内连接查询)

...oinQuery)【发布时间】:2014-10-0914:00:01【问题描述】:有人可以帮我把这个sql代码转换成linq。SQL查询selectdistinctcoursecodefromUnitSet_UnitwhereUnitCodein(\'FDFFSACA\',\'FDFFSCFSAA\',\'FDFOPTHCP3A 查看详情

协助将 SQL 查询转换为 LINQ 查询

...LINQ编写我用SQL查询编写的代码。但我做不到。有知道的可以帮帮我吗?我的SQL代码:DropDownListInvoiceTown.Items.Clear();Session["ilID"]=Convert.ToInt32(Dro 查看详情

c#将linq数据集转换为datatable

C#将LINQ数据集转换为Datatable1.方法一:(测试可用)//通过一个公共类将LINQ数据集转换为datatablepublic DataTable LINQToDataTable<T>(IEnumerable<T>varlist){    DataTable dtReturn= ne 查看详情

将 linq 查询转换为字符串数组 - C#

】将linq查询转换为字符串数组-C#【英文标题】:Convertlinqquerytostringarray-C#【发布时间】:2010-11-2514:44:53【问题描述】:将单列linq查询转换为字符串数组的最有效方法是什么?privatestring[]WordList()DataContextdb=newDataContext();varlist=fromxin... 查看详情

将 SQL Rank() 转换为 LINQ 或替代方法

...时间】:2012-04-1001:33:34【问题描述】:我有以下SQL语句,可以按预期/预期工作。但是我想将它翻译成LINQ语句(Lambda??),以便它适合我的DAL的其余部分。但是我看不出如何在LINQ中模拟Rank()。我在这里发布它的原因可能是错误的... 查看详情

C# LINQ 中的多短语搜索无法转换为 SQL

】C#LINQ中的多短语搜索无法转换为SQL【英文标题】:MultiphrasesearchinC#LINQCannotbetranslatedtoSQL【发布时间】:2021-12-0902:38:00【问题描述】:我正在尝试编写一个半高级的LINQtoSQL查询来搜索我在.NET6项目中的实体。我想让用户能够在搜... 查看详情

如何将 sql union 转换为 linq

...LINQ中的外观的指示,即一些示例会很好,或者如果有人可以推荐一个关于linq中UNIONS的好教程。selecttop10Barcode,sum(ItemDiscountUnion.AmountTaken) 查看详情

将 sql 查询转换为 linq 时显示 long 的 linq 查询不包含 Contains 的定义

...inq【发布时间】:2018-05-2907:54:04【问题描述】:朋友们,我们正在将sql查询转换为linq查询,这个转换涉及如下两个表select*fromTbl_Vulp 查看详情