2011-09-20 121 views
1

考虑3个实体。 GroupBoxMessage。每个组包含框,每个框包含消息。在L2E中选择/过滤嵌套集合

什么用lambda表达式来检索定制条件一个集团内部的消息在Linq到Entitis最巧妙的方法?

例如,我想选择某个组中昨天提交的消息(因此,resultr应该是IEnumerable<Message>)。我怎样才能做最少的数据库调用,并筛选出我的数据库查询结果?

更新
得到了不显示我的代码downvote。那是因为我没有。问题很简单。不是作业。没想到!

回答

1

假设你已经在你的数据库外键和导航性能在你因为这个模型,下面的代码应该做的伎俩:

var messages = context.Groups 
         .SelectMany(g => g.Boxes 
             .SelectMany(b => b.Messages 
                  .Where(m => m.Date == 
                     yourDate) 
                ) 
           ); 
1

你只需把它们

from g in group 
join b in boxes on g.id = b.groupid 
join m in messages on b.id = m.boxid 
where m.Date = your date 
select m 
之间连接查询
+0

虽然我说我有兴趣看到它使用lambda表达式,但谢谢你的解决方案。 – Kamyar

+1

@Kamyar - 如果你想去尝试丹尼尔解决方案,因为selectmany会使senese –