在L2E中选择/过滤嵌套集合

时间:2011-09-20 09:56:53

标签: c# linq lambda linq-to-entities

考虑3个实体。 GroupBoxMessage。每个组包含Boxes,每个Box包含Messages。

使用lambda表达式在 Linq To Entitis 中使用自定义条件检索 Group 中的消息的最佳方法是什么?

例如,我想选择昨天在某个组中提交的消息(因此,结果应为IEnumerable<Message>)。如何对db进行最少的调用并在db-query中过滤掉结果?

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

2 个答案:

答案 0 :(得分:1)

假设您的数据库中的外键和模型中的导航属性因此而产生以下代码:

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

答案 1 :(得分: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