4

IQueryable ではなく IEnumerable を返すようです。

メソッドのパラメーター:Func<Cat, bool> predicate

コード:

var allCats = _catEntities.GetCats(); // IQueryable

if (skip.HasValue) allCats = allCats .Skip(skip.Value);
if (take.HasValue) allCats = allCats .Take(take.Value);

 if (predicate != null)
            {
                allCats = allCats.Where(predicate);
            }

の代わりに が.Where返されるため、これはコンパイルされません。私はできることは知っていますが、それはそれを適切なものとして扱わないのではないかと思います。IEnumerableIQueryable.AsQueryableIQueryable

これに対する簡単な修正はありますか?

4

2 に答える 2

2

そのpredicateパラメータはExpression<Func<Cat, bool>>、 だけでなく である必要がありますFunc<Cat, bool>

そうすれば Enumerable.Where の代わりにQueryable.Whereを使用するため、IQueryable が返されます。

メソッドを呼び出すときに、引き続きラムダ式を使用できます。コンパイラは、ラムダを式に変換する方法を認識しています。

于 2014-10-07T09:54:47.007 に答える