我有一个问题。
我的查询包含:
left join tclientes b on b.codplaza=a.codplaza and b.codcli=a.codcli
在"和"它与表B交叉第二次表A,我想要使用linq的工具:
var ret = Context.tH
.GroupJoin(
Context.t,
tH => tH.cod,
t => t.cod,
(x, y) => new { tH = x, t = y })
.Where(R => R.tH.codplaza_usu == placeCode && R.tH.codusuario == codusuario && R.tH.codcli != -1)
.SelectMany(
xy => xy.t.DefaultIfEmpty(),
(x, y) => new { tH = x.tH, t = y })
.Select(s => new TClientesDMO
{
codplaza = s.tH.codplaza,
}).ToList();
如何添加左连接的第二个条件?
答案 0 :(得分:0)
据我了解您的问题,查询和提到的"双重交叉",可能的解决方案或方法可能是:
var result = (from th in Context.tH
join t in Context.t on new {CodPlaza = th.codplaza, CodCli = th.codcli} equals new { CodPlaza = t.codplaza, CodCli = t.codcli }
where th.codplaza_usu == placeCode
&& th.codusuario == codusuario
&& th.codcli != -1
select new TClientesDMO
{
codplaza = th.codplaza,
}).ToList();
此查询将返回codplaza
的所有tH
,t
与属性codplaza
和codcli
上的tH
相关联。此外,只有codplaza_usu == placeCode
个对象会被考虑,其中包含codusuario == codusuario
,codcli != -1
和DefaultIfEmpty()
。
我希望它符合您的需求。
是否有必要让#34;空" (SELECT DISTINCT CA.colstr
FROM str_matching s1 JOIN
str_matching s2
ON s1.colstr <> s2.colstr AND
(s2.colstr LIKE s1.colstr + '%' OR
s1.colstr LIKE s2.colstr + '%'
) CROSS APPLY
(VALUES(s1.colstr), (s2.colstr)) as CA(colstr) ;
)条目也是?
如果查询不符合您的预期结果,请提供更多信息。