使用 And 条件将 Linq 左连接到 SQL [重复]

Posted

技术标签:

【中文标题】使用 And 条件将 Linq 左连接到 SQL [重复]【英文标题】:Left join with And condition Linq to SQL [duplicate] 【发布时间】:2016-08-16 01:15:41 【问题描述】:

如何将以下 sql 查询转换为 linq to sql?

select c.ClientID , c.ClientName , case when cca.clientID >0  then 1 else 0 end 'ClientAccess'  from Clients c
left join clientcontactaccess cca ON cca.clientid = c.ClientID and cca.ClientContactID = 2141
where c.GroupID = 1

到目前为止我已经这样做了,但不知道如何处理“and cca.ClientContactID = 2141”的情况;

dynamic query = (from c in db.Clientdb.ClientContactAccesscca.ClientIDc.ClientIDGroupfrom cca in GroupDetails.DefaultIfEmpty()where c.GroupID == 1c.ClientIDc.ClientNamecca.ClientID.ToString == null ? 0 : 1);

【问题讨论】:

查看网页左外连接:code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9 感谢链接,但看不到任何带有“和”条件的左连接示例。 有一个不错的工具叫Linqer。 Linqer 是一个 SQL 到 LINQ 的转换工具。它有助于学习 LINQ 和转换现有的 SQL 语句。 谢谢我会调查这个 【参考方案1】:

我最终使用了 where 子句和 join(第二行)

Dim query = (From c In db.Client _
                 Group Join cca In db.ClientContactAccess.Where(Function(cca) cca.ClientContactID = _contactID) On cca.ClientID Equals c.ClientID _
                 Into GroupDetails = Group _
                 From cca In GroupDetails.DefaultIfEmpty() Where c.GroupID = 1
                 Select c.ClientID, c.ClientName, ClientAccess = If(cca.ClientID.ToString Is Nothing, 0, 1))

如果有人有更好的解决方案,那么请发帖,因为这会增加知识,而且我是 linq 的新手。

【讨论】:

基于与此完全相同的所有其他问题,我会说您走在正确的轨道上。

以上是关于使用 And 条件将 Linq 左连接到 SQL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

多个(级联)左连接上的 Linq 查询 NullReferenceException

SQL中有几种连接?有啥区别?(左连右连内连和外连?)

Lambda表达式多表连接的左连

Linq动态条件

如何使用 LINQ to SQL 连接到 SQL Server?

SQL 内连接到左连接表