我该如何将这段SQL代码转换为LINQ?

3

如何将这段SQL代码转换为LINQ?

SELECT * FROM tbl1  
  WHERE NOT EXISTS (SELECT NULL AS Expr1
            FROM tbl2 AS tbl2_1
            WHERE (T = 'literal') AND tbl1.Id = someId)

这是我的代码,但它无法正常工作:
from a in Tbl1 
let b = from b in Tbl2 select b.someId   
let c = from c in Tbl2 select c.T 
where (!c.Contains("literal") & !(b.Contains(a.Id)))
select a

4
请详细说明“doesn't work”的具体表现。 - Blorgbeard
2个回答

4
这应该可以解决问题:
from t1 in Tbl1
where !(from t2 in Tbl2
    where t2.T == "literal"
    select t2.someId)
       .Contains(t1.Id)
select t1

1
@user 不用客气。既然我的回答对您有帮助,请务必将其接受为答案(点击旁边的复选标记)。 - arcain

0

你也可以尝试这个:

var query =
    from a in Tbl1
    join b in Tbl2 on a.Id equals b.someId into bs
    where !bs
        .Where(b2 => b2.T == "literal")
        .Any()
    select a;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接