我有两个表A和B,我可以用linq加入表。如果外连接有匹配,我需要一种方法来查找是否可以与查询一起使用布尔值。例如,如果tableA中存在记录而不是tableB中,则需要布尔值为true。这可以使用IF在SQL中完成,我想知道在Linq中是否有类似的东西
var result = from a in tableA
join b in tableB on a.Id equals b.userId into group1
from g1 in group1.DefaultIfEmpty()
select new{id = g1.Id,userId = g1.userId,boolIsPresent =(present in tableA not in tableB)}.ToList();
答案 0 :(得分:1)
目前,您正在执行inner join
,而不是left outer join
,这意味着只检索两个表中存在的记录/对象。因此你的bool boolIsPresent
总是 true 。
编辑:
测试 tableA 中是否存在记录,并且 tableB 中没有匹配的记录,只需检查g1 != null
,即:
var result = from a in tableA
join b in tableB on a.Id equals b.userId into group1
from g1 in group1.DefaultIfEmpty()
select new
{
id = g1 != null? g1.Id : enterDefault,
userId = g1 != null? g1.userId : enterDefault,
boolIsPresent = g1 != null
}.ToList();
答案 1 :(得分:0)
这将是
boolisPresent = b != null
一旦你的外部联接工作了!