resharper让我把它变成一个局部变量,写下"访问修改后的闭包"
if (filter != null)
{
if (filter.CityId != 0)
{
ads = ads.Where(x => x.Ad.CityId == filter.CityId);
}
if (filter.BusinesCategoryId != 0)
{
ads = ads.Where(x => x.BusinessCategoryId == filter.BusinesCategoryId);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么局部变量过滤?
因为您的查询(Where(...))没有被执行.我假设过滤器是从循环中获得的?
Linq查询在使用之前不会执行.因此,如果您通过一堆过滤器循环然后开始执行它们,则查询中的过滤器值将是错误的.
类似的问题:访问Modified Closure 还:http://devnet.jetbrains.net/thread/273042
需要看到更多的代码100%肯定.