2010-09-19 2 views
1

j'ai un LINQ vraiment simple déclaration de ENTITES: -Puis-je faire un "Take (x)" sur l'entité "Include" dans une requête Linq?

var query = (from q in Users.Include("UserHistory") 
      select q).Take(20); 

fonctionne très bien ... sauf que, pour chaque utilisateur .. l'histoire peut être n + 1. Certains utilisateurs ont des centaines de UserHistory enregistrements. Donc, est-ce que je peux restreindre le nombre de UserHistory enregistrements à .. 10 ou 5 ou peu importe? Dois-je utiliser projections pour cela? Peut-il être fait sans projections?

Répondre

0

Vous ne pouvez pas le faire en utilisant le comprennent, mais vous pouvez essayer ceci:

var query = 
    from user in Users 
    select new 
    { 
     user, 
     history = user.UserHistory.Take(20) 
    }; 

Je ne suis pas sûr que EF est en mesure de créer une seule requête SQL de celui-ci.

+0

Oui - Alex James (de MS ADO.NET/Linq-To-Sql/EF/OData renommée) a confirmé cela sur Twitter. –

Questions connexes