System.Linq.IQueryable не содержит определения для 'Where'
Здесь очень странная ситуация. По какой-то причине я не могу назвать "Где" или любые другие функции для моего объекта IQueryable.
Вот что у меня есть:
public IQueryable<Employee> Employees
{
get { return _entities.Employees.AsQueryable(); }
}
public ActionResult Index()
{
return View(new HomeViewModel
{
Employees = Employees.Where(e => e.Active == true)
});
}
Но Intellisense не поднимает функцию Where, и я получаю сообщение об ошибке сборки:
'System.Linq.IQueryable' не содержит определения для "Где" и не имеет метода расширения "Где" может быть найден первый аргумент типа "System.Linq.IQueryable" (вам не хватает директивы using или ссылка на сборку?)
Но я могу назвать .Where
следующим образом:
public IQueryable<Employee> Employees
{
get { return _entities.Employees.AsQueryable().Where(e => e.Active == true); }
}
Я понятия не имею, что происходит.
Ответы
Ответ 1
Вам нужно добавить "используя System.Linq;" statement в файле, где он не работает. Все методы расширения для IEnumerable/IQueryable определены в классах Enumerable и Queryable, соответственно.
Чтобы использовать методы расширения, класс, определяющий метод, должен быть в области. Я предполагаю, что ваш второй фрагмент кода происходит из другого файла, в котором у вас есть оператор using.