2012-07-16 58 views
0

在下面的代码中,第一条LINQ语句抓住所有活动客户(c)并包含他们的访问。后续行会执行额外的过滤,但与此问题无关。如何返回具有相关实体属性条件的实体?

在最后一行,我试图限制客户访问那些Visit.Id等于parsedVisitId的客户,但无法让这条线路工作。我不能把所有甚至可以编译的东西放在一起。 parsedVisitId是一个从字符串中分析出来的int。

如何重写最后一行以仅返回访客ID等于parsedVisitId的客户?

var customers= this.db.Customers.Where(c => c.IsActive).Include(c => c.Visits).AsQueryable(); 
// 
// more filtering stuff happens here... 
// 
customers= customers.Where(p => p.Visits.Where(v => v.Id == parsedVisitId)); 
+0

客户访问是否正确? – ethicallogics 2012-07-16 16:46:29

回答

0
customers = customers.Where(p => p.Visits.Any(v => v.Id == parsedVisitId)); 

使用任何代替凡Visits.I希望上面的代码行会有所帮助。

在代码

客户= customers.Where(p值=> p.Visits.Where(V => v.Id == parsedVisitId));

customers.Where(...)方法期望的λexpresion具有类型客户和返回类型布尔的参数,但你的lambda表达式

p.Visits.Where(V => v.Id == parsedVisitId)类型

IEnumerable<Visit> 

,因此它不工作的

回报。我想知道它是如何编译的。

相关问题