2011-08-18 104 views
0

一个特定的数字。如果我写只检索的子记录

db.Topics.Include("ChildTopics") 

然后它给所有孩子的意见。但我想要的只是“童话创建日期”排序的前两名儿童话题。

回答

0

这是不可能通过包含方法仅包含前两个。 在你的情况,你可以这样做:

var firstTwo = from topic in datacontext.Topics 
    select new { Topic= topic, ChildTopic= topic.ChildTopics.OrderBy(c => c.childtopic_created_date).Take(2) }; 
+0

,我会用这种方式来获取数据,但我得到类型转换错误 我的代码是 IQueryable的 latestTopics =(IQueryable的)db.Topic.Select(_x => 新 { 主题= _x, A = _x.A,//一些对象 B = _x.B,//一些对象 ChildTopics = _x.ChildTopics.OrderBy (e => e.create ddate).Take(2) }); – Helen

+0

我收到此错误 无法投射类型为'System.Collections.Generic.List'1 [<> f__AnonymousType0'4 [Topic,A,B,System.Collections.Generic.IEnumerable'1 [Topic]] ]'键入'System.Linq.IQueryable'1 [主题]'。 – Helen

+0

与选择(新..)你会得到一个IEnumerable ,所以这是正常的,有一个转换错误。避免投射,让它成为“var latestTopics = db.Topic ...”然后使用创建的属性(Topic,A,B,ChildTopics) – tahir

0

不包含所有依赖的早期负荷,但我不知道的方式对这个实现应用的限制。

的另一种方法是塑造的结果,如:

var comments = db.Topics.Select(_x=> 
        new{ 
         Topic = _x, 
         TopTwoChildTopics = _x.ChildTopics.Top(2) 
         }); 
+0

感谢克拉姆,是有办法,我可以用它来与IQueryable的 自当我尝试键入cast时抛出以下错误 无法投射“System.Collections.Generic.List'1 [<> f__AnonymousType0'4 [Topic,System.Collections.Generic.IEnumerable'1 [Topic]] ]'键入'System.Linq.IQueryable'1 [主题]'。 – Helen

+0

如果您尝试进行投射时会出现此错误,因为上述结果属于匿名类型,请尝试执行进一步选择以获取主题。 – KRam