Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to limit number of related data with Include

class Cat
{
   public int CatID;
   public string Name;
   public ICollection<Post> Posts;
}
class Post
{
   public int PostID;
   public string Name

   public int CatID;
   public virtual Cat Parent;
}

And I want to load all the Cat(egories) with their Posts so:

var cats = context.Cat.Include(c => c.Posts);

Now I want to limit the number of Posts that are returned, can someone show me how to do that?

I'm using EntityFramework 4.3.1

like image 758
nvcnvn Avatar asked Mar 03 '12 10:03

nvcnvn


1 Answers

It is not possible with eager loading (Include) - eager loading returns always all related data. You must use projections to anonymous or new type (you cannot use your existing mapped entities):

var cats = context.Cat.Select(c => new 
{ 
    Category = c, 
    Posts = c.Posts.OrderBy(p => p.Name).Take(10) 
});
like image 136
Ladislav Mrnka Avatar answered Sep 21 '22 18:09

Ladislav Mrnka