У меня проблема с получением данных из моей базы данных с помощью 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);
}
}
Но я не думаю, что это хорошее решение вообще.