这是在 .netCore 项目中使用 LINQ 查询连接两个表的正确方法吗?

Posted

技术标签:

【中文标题】这是在 .netCore 项目中使用 LINQ 查询连接两个表的正确方法吗?【英文标题】:Is this the right way to join two tables using LINQ query in .netCore project? 【发布时间】:2021-12-20 11:42:06 【问题描述】:

好吧,我熟悉 mysql 中的 sql 查询,但现在我需要使用 LINQ 查询来调用数据库并从那里获取记录,但我在加入表和获取通用时卡住了这些表中的记录。

submittedDatabaseResponseList = (from submitted in _admissionsContext.ApplicationSubmittedSlate
                                         join started in _admissionsContext.ApplicationStartedSlate on new  submitted.SlateID, submitted.RoundKey  equals new  started.SlateID, started.RoundKey 

                                         where submitted.IsSuccess == false
                                         where started.SalesforceOpportunityID != null
                                         where submitted.FailedAttempts < 5
                                         select new ApplicationSubmittedSlate()
                                         
                                             SalesforceOpportunityID = submitted.SalesforceOpportunityID,

                                             SlateID = submitted.SlateID,
                                             GPID = submitted.GPID,
                                             RoundKey = submitted.RoundKey,


                                         ).ToList();

【问题讨论】:

你能告诉我们你到底卡在哪里了吗?任何错误消息。? 【参考方案1】:

使用像下面这样的单个 where 子句,

submittedDatabaseResponseList = (from submitted in _admissionsContext.ApplicationSubmittedSlate
                                 join started in _admissionsContext.ApplicationStartedSlate on new  submitted.SlateID, submitted.RoundKey  equals new  started.SlateID, started.RoundKey 

                                 where submitted.IsSuccess == false
                                    && started.SalesforceOpportunityID != null
                                    && submitted.FailedAttempts < 5
                                 select new ApplicationSubmittedSlate
                                 
                                     SalesforceOpportunityID = submitted.SalesforceOpportunityID,
                                     SlateID = submitted.SlateID,
                                     GPID = submitted.GPID,
                                     RoundKey = submitted.RoundKey
                                 ).ToList();

【讨论】:

这有什么不同? @AluanHaddad 问题被问到,是否正确?无论如何,这是错误的方式吗?如果你有一个有意义的不同方法,请在这里。 是的,只需使用单个 where&amp;&amp; 重写查询,而不是重复的 where 子句。两种形式都有效。问题本身并不足以回答它

以上是关于这是在 .netCore 项目中使用 LINQ 查询连接两个表的正确方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 .NET Core 进行分组的 Linq 查询

linQ!!增删改查 好用!

LINQ - 在 IEnumerable 中选择第二个项目

利用LinQ技术和lambd表达式进行增删改查

2017-6-1 Linq 基础查询 (增删改查)

LINQ 增删改查数据绑定