使用 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