Why do local variable?
c#, filter, linq
Solution
Because your query(Where(...)) is not being executed. I assume filter is obtained from a loop?
Linq query are not executed until they are used. so if you looped though a bunch of filters then started executing them later, the filter value would be wrong in the query.
A similar question : Access to Modified Closure Also: http://devnet.jetbrains.net/thread/273042
would need to see more code to 100% sure.
Problem
resharper offers me to make this a local variable, and writes "access to modified closure" ``` 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); } } ``` Why do local variable filter?