У меня проблема с получением данных из моей базы данных с помощью LINQ
У меня есть две таблицы Team
и TeamMember
, которые связаны отношением 1-N .
Я использую Entity Framework, и у меня есть одна сущность для каждой таблицы со свойством для каждого столбца. Также в сущности Team есть свойство навигации TeamMember
как результат этой связи.
Я хочу сделать запрос, по которому я могу получить всю свою команду с ее членами команды.
result = (from t in this.context.Teams
orderby t.Name
select t)
.Include("TeamMembers")
Это прекрасно работает. Я получаю коллекцию объектов группы со свойством Team.TeamMember
, заполненным данными члена каждой команды.
Проблема в том, что я хочу выполнить более сложный запрос, например, отфильтровать запрос для TeamMembers.
Например, в обеих таблицах есть столбец EndDateTime
. Если я хочу получить всю команду и членов команды, которые не закончились (время их даты окончания не равно нулю), я не знаю, как это сделать.
С помощью этого запроса я буду фильтровать только команды, но не членов команды.
result = (from t in this.context.Teams
where t.EndDateTime == null
orderby t.Name
select t)
.Include("TeamMembers")
.ToList();
Есть идеи?
Я как бы «решаю» это, выполняя фильтрацию члена после запроса к коллекции. Вот так:
//Filter out the End dated care coordiantors
var careCoordinatorsToDelete = new List<CareCoordinator>();
foreach (var team in result)
{
careCoordinatorsToDelete.Clear();
foreach (var careCoordinator in team.CareCoordinators)
{
if (careCoordinator.EndDateTime != null)
careCoordinatorsToDelete.Add(careCoordinator);
}
foreach (var toDelete in careCoordinatorsToDelete)
{
team.CareCoordinators.Remove(toDelete);
}
}
Но я не думаю, что это хорошее решение.