它通过 linq 中的两个字段与左连接交叉两个表
It crosses two tables with left join with two fields in linq
我有问题。
我的查询包含:
left join tclientes b on b.codplaza=a.codplaza and b.codcli=a.codcli
在"and"中它第二次跨越table A和table B,我想用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();
如何添加左连接的第二个条件?
据我了解您的问题、查询和提到的 "double crossing",可能的解决方案或方法可能是:
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();
此查询将 return 来自 tH
的所有 codplaza
,它们在属性 codplaza
和 codcli
上与 t
连接。此外,只有 tH
个具有 codplaza_usu == placeCode
、codusuario == codusuario
和 codcli != -1
的对象将被考虑。
希望能满足您的需求。
是否也需要 "empty" (DefaultIfEmpty()
) 条目?
如果查询不符合您的预期结果,请提供更多信息。
我有问题。
我的查询包含:
left join tclientes b on b.codplaza=a.codplaza and b.codcli=a.codcli
在"and"中它第二次跨越table A和table B,我想用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();
如何添加左连接的第二个条件?
据我了解您的问题、查询和提到的 "double crossing",可能的解决方案或方法可能是:
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();
此查询将 return 来自 tH
的所有 codplaza
,它们在属性 codplaza
和 codcli
上与 t
连接。此外,只有 tH
个具有 codplaza_usu == placeCode
、codusuario == codusuario
和 codcli != -1
的对象将被考虑。
希望能满足您的需求。
是否也需要 "empty" (DefaultIfEmpty()
) 条目?
如果查询不符合您的预期结果,请提供更多信息。