如何在实体框架3.5中选择具体数量的子实体而不是全部?
问题描述:
我想知道如何选择特定数量的子对象而不是全部使用包含?如何在实体框架3.5中选择具体数量的子实体而不是全部?
可以说我有对象'组',我需要选择加入该组的最后十名学生。
当我使用'.Include(“学生”)时,EF包括所有学生。我试图使用Take(10),但我对EF和编程也很新,所以我无法弄清楚。 有什么建议吗?
更新:
行,我也从DB这样已经获取组对象:
Group group = db.Groups.FirstOrDefault(x=>x.GroupId == id)
我知道,我可以添加Include("Students")
声明,但会带来所有的学生,无论我只需要最新的10名学生,他们的人数可能相当大。我可以做这样的事情:var groupWithStudents = group.Students.OrderByDescending(//...).Take(10);
?
与此问题是,采取<>不再出现在intellisense。这足够清楚了吗?感谢您的回复
答
无法使Gratzy的建议与条件包括工作......在这里找到了解决办法:http://msdn.microsoft.com/en-us/library/bb896249.aspx
查询应该是这样的:
group.Students.Attach(group.Students
.CreateSourceQuery()
.OrderByDescending(x=>x.JoinDate)
.Take(10));
这正是我在寻找!
感谢您的所有回应!
答
我相信Take(10)将是正确的。
var Students= (from c in Groups
orderby c.DateAdded descending
select c).Take(10);
我的经验虽然是它会产生一些可怕的SQL。
编辑:
看看这篇博客文章的帮助,就六方会谈的条件包括。
http://blogs.msdn.com/b/alexj/archive/2009/10/13/tip-37-how-to-do-a-conditional-include.aspx
很高兴您找到解决方案! – Gratzy 2010-06-18 16:32:09