0

Web UI からのクエリ構成を可能にする関数を使用しています。ObjectDataSource、gridView などの dataBound コントロールで使用できるページング機能を実装します。

  public class MyClass<TEntity> where TEntity : class
    {
        FakeEntities xxx = new FakeEntities();

        public  IEnumerable<TEntity> Get(Func<IQueryable<TEntity>, IQueryable<TEntity>> queryExpression)
        {
            var query = xxx.Set<TEntity>();

            return queryExpression(query).ToList();
        }

        public int Count()
        {
            // What Can I return?
        }
    }

// **** USAGE ****
  MyClass<User> u = new MyClass<User>();
            var all = u.Get(p => p.Where(z => z.Account == "Smith").OrderBy(order => order.IdOther).Skip(1).Take(2));

上記のクエリは Take および Skip 関数を使用しているため、エンティティの実際の数を取得できますか? 明らかに、フィルター式を変更せずに Query Count を返さなければなりません。

4

1 に答える 1

0

I found this solution: Get count of an IQueryable<T>

ただし、内部メッセージ{"このメソッドは LINQ to Entities インフラストラクチャをサポートしており、コードから直接使用することを意図していません。"}で targetInvocationException を取得します。

ベスト プラクティスでは、「プレゼンテーションのニーズ」をラップ クラスに移動するように強制する必要があるため、私の要求が非常に異常である可能性があることはわかっています。したがって、ビジネス ロジック クラスで Count エンティティを取得する必要はもうありません。

それは単なるUIの問題です。

同じくありがとう。

于 2013-05-24T11:32:48.823 に答える