2014-10-30 89 views
0

使用VS 2013(VB)。在LINQ中添加SQL WHERE子句

我有以下LINQ查询

Dim countCompanies = (From num In db.GasEmailAddresses 
           Group Join GCC In db.GasCompanies 
           On num.CompanyID Equals GCC.ID 
           Into GCComp = Group 
           Select num.CompanyID).Distinct.Count 

它返回4个结果。我想沿着

WHERE GCC.Active = 1 

我一直在搞乱这个位的代码位线添加where子句和不能似乎得到它的工作。

任何想法?

--- UPDATE ---

根据建议

修改后的代码

Dim countCompanies = (From num In db.GasEmailAddresses 
          Group Join GCC In db.GasCompanies.Where(Function(y) y.Active = 1) 
          On num.CompanyID Equals GCC.ID 
          Into GCComp = Group 
          Select num.CompanyID).Distinct.Count 

回答

0

尽量过滤掉,同时检索数据源: -

companies.Where(Function(x) x.Active = 1) 
+0

不,我仍然得到4个结果我期望得到3,因为我将一家公司标记为不活跃,即0 – Silentbob 2014-10-30 10:57:34

+0

@ user2050577 - 您在哪里申请过滤器?假设,如果db.GasCompanies更早地返回5条记录,而不是过滤后,如果任何活动标志为零,则此计数应该更小。请重新检查。 – 2014-10-30 11:01:57

+0

我已编辑我的帖子,以显示我如何在您的建议中添加。 – Silentbob 2014-10-30 11:22:07