1
我刚开始使用EF Code First来实现一个简单的博客。实体框架选择导航ICollection As IQueryable
我有具有可变
virtual Product Product { get; set; }
一个产品的产品类有类别
virtual ICollection<Category> Categories { get; set; }
最后类具有收藏帖子集合的帖子对象。
virtual ICollection<Post> Posts { get; set; }
这到目前为止效果很好。现在我想要获取特定类别的帖子。我本来是做这在我的PostRepository通过传递分类标识:如
public IQueryable<Post> GetPosts(int catId) {
var q = _db.Posts.Select(p => p).Distinct();
if (catId > 0)
q = q.Where(p => p.Product.Categories.Any(c => c.ID == catId));
}
这个伟大的工程,但我也使用CategoryRepository让我的类别。由于该类别包含产品列表,而该列表又包含一系列帖子,所以我认为最好只使用它,并从PostRepository中删除该类别。
但是,我遇到了一个问题。要获得职位,我在我的控制器使用:
model.Category = _cr.GetCategory(catId);
model.Posts =
new PaginatedList<Post>(model.Category.Products.Select(p => p.Posts)
.AsQueryable(), pageNumber, _defaultPageSize);
的PaginatedList是的NerdDinner采取在一个IQueryable的一个。现在,这个错误,因为我传递一个
IQueryable<ICollection<Post>>
所以我的问题是我如何从我的分类实体获得的IQueryable?我相信答案很简单,但我一直在尝试各种组合,无济于事。
不,我没有,但我现在已经!谢谢拉迪斯拉夫。我甚至不知道SelectMany,但现在阅读后很明显这是我所需要的。再次感谢! – Terry 2011-02-27 13:41:31
我有同样的情况,谢谢! – mihkov 2016-05-17 12:38:49