对lambda表达式或linq的SQL查询

时间:2011-03-14 05:53:06

标签: sql

如何将以下查询转换为lambda表达式

select * 
from Invoice_main 
where id not in 
    (select invoice_main_id from Invoice_payment_by_pay_method)

我找不到'不在'的替代方案。

1 个答案:

答案 0 :(得分:2)

假设您正在使用LINQ-to-SQL:

from inv in Invoice_main
where !(from m in Invoice_payment_by_pay_method select m.invoice_main_id).Contains(inv.id)
select inv

。(...)。包含(...)由LINQ-to-SQL自动转换为NOT EXISTS子句(注意:这比NOT IN子句更有效)

其他提供程序(即不是LINQ-to-SQL)可能不支持将.Contains重写为EXISTS,因此这可能不适用于所有内容。