考虑3个实体。 Group
,Box
和Message
。每个组包含Boxes,每个Box包含Messages。
使用lambda表达式在 Linq To Entitis 中使用自定义条件检索 Group 中的消息的最佳方法是什么?
例如,我想选择昨天在某个组中提交的消息(因此,结果应为IEnumerable<Message>
)。如何对db进行最少的调用并在db-query中过滤掉结果?
更新
得到了一个没有显示我的代码的downvote。那是因为我没有。问题很简单。不是作业。没想到!
答案 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