System.Linq.IQueryable не содержит определения для «Где» - PullRequest
34 голосов
/ 20 сентября 2011

Очень странная ситуация здесь.По какой-то причине я не могу вызвать «Где» или любые другие функции для моего объекта 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 не подхватываетГде функция, и я получаю ошибку сборки, которая говорит:

'System.Linq.IQueryable' не содержит определения 'Где' и нет метода расширения 'Где', принимающего первый аргумент типа'System.Linq.IQueryable' может быть найден (вам не хватает директивы using или ссылки на сборку?)

Но я могу назвать .Where вот так, и это работает:

public IQueryable<Employee> Employees
{
    get { return _entities.Employees.AsQueryable().Where(e => e.Active == true); }
}

Понятия не имею, что происходит.

1 Ответ

56 голосов
/ 20 сентября 2011

Вам необходимо добавить «using System.Linq оператор директива в файле, где он не работает. Все методы расширения для IEnumerable / IQueryable определены в классах Enumerable и Queryable соответственно.

Чтобы использовать методы расширения, класс, определяющий метод, должен находиться в области видимости. Я предполагаю, что ваш второй фрагмент кода взят из другого файла, где у вас есть оператор using.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...