LINQ / Lambda等同于SQL NOT IN

时间:2012-07-17 16:55:22

标签: c# .net sql linq linq-to-sql

我有以下内容:

context.tblProviderServices
.Where(ps => (DateTime.Now > ps.EffectiveDate && DateTime.Now < ps.TerminateDate) &&
         (ps.tblProvider.InactiveDate == null || DateTime.Now < ps.tblProvider.InactiveDate) &&
         (ps.tblProvider.IncludeInDirectory == "Y") &&
         (ps.ServiceStatusID == "Final") &&
         (ps.IsMemberSpecific == null || ps.IsMemberSpecific == false) &&
         (ps.tblProvider.tblProviderReferralHolds.Where(h => h.TerminateDate == null).Count() < 1))

我的问题与最后一行有关。这是错误的,我可以说,因为我正在写它,但我似乎无法弄清楚如何将它改变为我想要的。

所有这些表都设置了适当的关系。 tblProvider是1到多数tblProviderReferralHolds,我想要完成的是将我的结果限制为仅提供商目前没有保留的服务。

在SQL中,我可以用NOT IN(SubQuery)类型的交易完成类似的事情。

如何在LINQ中执行此操作?

2 个答案:

答案 0 :(得分:6)

我认为您可以使用Any

最后一行是

!(ps.tblProvider.tblProviderReferralHolds.Any(h => h.TerminateDate == null))

答案 1 :(得分:0)