在下面的代码中,第一个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));
答案 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>
因此无法正常工作。我想知道它是如何编译的。