Нет «хорошего» способа сделать это, но вы можете попробовать это - спроецировать Group
и отфильтрованный Users
на анонимный объект, а затем Select
только Groups
:
var resultObjectList = AllGroups.
Select(g => new
{
GroupItem = g,
UserItems = g.Users.Where(u => !u.IsInactive)
}).ToList();
FilteredGroups = resultObjectList.Select(i => i.GroupItem).ToList();
Это не документированная функция, связанная с тем, как EF создает SQL-запросы - в этом случае она должна отфильтровывать дочернюю коллекцию, поэтому ваш список FilteredGroups
будет содержать только активных пользователей.
Если это работает, вы можете попробовать объединить код:
FilteredGroups = AllGroups.
Select(g => new
{
GroupItem = g,
UserItems = g.Users.Where(u => !u.IsInactive)
}).
Select(r => r.GroupItem).
ToList();
(Это не проверено, и результат зависит от того, как EF обработает второй Select
, поэтому было бы неплохо, если бы вы сообщили, какой метод работает после того, как вы его попробовали).