ここで非常に奇妙な状況。何らかの理由で、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); }
}
何が起こっているのか分かりません。
「using System.Linq ;」を追加する必要があります ステートメント 動作していないファイル内のディレクティブ。 IEnumerable/IQueryableのすべての拡張メソッドは、それぞれ Enumerable および Queryable クラスで定義されています。
拡張メソッドを使用するには、メソッドを定義するクラスがスコープ内にある必要があります。私の推測では、2番目のコードスニペットは、usingステートメントがある別のファイルからのものです。