Выбор / фильтрация вложенных коллекций в L2E - PullRequest
1 голос
/ 20 сентября 2011

Рассмотрим 3 объекта.Group, Box и Message.Каждая группа содержит ящики и каждый ящик содержит сообщения.

Каков самый удобный способ получения сообщений в Группе с пользовательскими условиями в Linq To Entitis с использованием лямбда-выражений?

Например, я хочу выбрать сообщения, отправленные вчера в определенной группе (таким образом, результат должен быть IEnumerable<Message>).Как я могу сделать наименьшее количество вызовов в БД и отфильтровать результаты в моем БД-запросе?

Обновление
Получил отрицательный ответ за то, что не показал мой код.Это потому что у меня их нет.Вопрос достаточно прост.не домашняя работа.Не ожидал этого!

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Вам просто нужно поместить запрос соединения между ними

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
1 голос
/ 20 сентября 2011

Предполагая, что у вас есть внешние ключи в вашей базе данных и свойства навигации в вашей модели из-за этого, следующий код должен сделать трюк:

var messages = context.Groups
                      .SelectMany(g => g.Boxes
                                        .SelectMany(b => b.Messages
                                                          .Where(m => m.Date ==
                                                                      yourDate)
                                                   )
                                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...