web-dev-qa-db-ja.com

System.Linq.IQueryableには「Where」の定義が含まれていません

ここで非常に奇妙な状況。何らかの理由で、IQueryableオブジェクトで「Where」または他の関数を呼び出すことができません。

私が持っているものは次のとおりです。

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」には「Where」の定義が含まれておらず、「System.Linq.IQueryable」タイプの最初の引数を受け入れる拡張メソッド「Where」が見つかりませんでした(usingディレクティブまたはAssembly参照がありませんか? ?)

しかし、私はこのように.Whereを呼び出すことができ、それは動作します:

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

何が起こっているのか分かりません。

36
Steven

「using System.Linq ;」を追加する必要があります ステートメント 動作していないファイル内のディレクティブ。 IEnumerable/IQueryableのすべての拡張メソッドは、それぞれ Enumerable および Queryable クラスで定義されています。

拡張メソッドを使用するには、メソッドを定義するクラスがスコープ内にある必要があります。私の推測では、2番目のコードスニペットは、usingステートメントがある別のファイルからのものです。

58
Chris Shain