对lambda表达式或linq的SQL查询

Muk*_*esh 5 sql

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

select * 
from Invoice_main 
where id not in 
    (select invoice_main_id from Invoice_payment_by_pay_method)
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*ung 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
Run Code Online (Sandbox Code Playgroud)

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

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