2013-05-24 4 views
0

J'utilise une fonction pour permettre la composition de requête de l'interface utilisateur Web et je mettre en œuvre la fonctionnalité de pagination qui sera disponible pour les contrôles DataBound tels que ObjectDataSource, GRIDVIEW, etc:Extrait radiomessagerie de IQueryable

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)); 

La requête ci-dessus utilise la fonction Take et Skip, puis-je obtenir le nombre réel de mes entités? Évidemment, je dois retourner le nombre de requêtes sans modifier l'expression du filtre.

Répondre

0

Je trouve cette solution: Get count of an IQueryable<T>

Cependant, je reçois TargetInvocationException avec le message intérieur { « Cette méthode prend en charge l'LINQ à l'infrastructure des entités et n'est pas destinée à être utilisée directement à partir de votre code. »}

Je sais que ma requête pourrait être anormale, parce que la meilleure pratique devrait imposer de déplacer les "besoins de présentation" à une classe d'habillage et c'est ce que je ferai. Donc, je n'ai plus besoin d'avoir des entités Count dans ma classe de logique métier.

Cela ne concerne que l'interface utilisateur.

Merci pareil.