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?

Original source

Related problems