2012-06-14 43 views
3

我该如何将此SQL代码转换为LINQ?我该如何将此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

请展开“不起作用”。 – Blorgbeard

回答

4

这应该做的伎俩:

from t1 in Tbl1 
where !(from t2 in Tbl2 
    where t2.T == "literal" 
    select t2.someId) 
     .Contains(t1.Id) 
select t1 
+0

是的,这是伎俩谢谢! – user1457485

+1

@用户不客气。由于我的回应对您有用,请务必接受它作为答案(单击旁边的复选标记)。 – 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;