如何在相关实体的属性上返回具有条件的实体?

时间:2012-07-16 16:39:09

标签: linq

在下面的代码中,第一个LINQ语句抓取了所有活跃客户(c)并包含了他们的访问次数。后续行执行其他过滤,但与此问题无关。

在最后一行,我试图将客户限制为那些访问量等于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));

1 个答案:

答案 0 :(得分:0)

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

使用Any而不是Visits.I希望上面的代码行有用。

在您的代码中

  

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

customers.Where(...)方法需要一个lambda expresion,其参数类型为Customer和ReturnType bool但是你的lambda表达式

  

p.Visits.Where(v => v.Id == parsedVisitId)

返回类型

IEnumerable<Visit>

因此无法正常工作。我想知道它是如何编译的。