ССЫЛКА НА SQL: КОЛИЧЕСТВО (table_id) < 2

#linq-to-sql #asp.net-mvc-2

#linq-to-sql #asp.net-mvc-2

Вопрос:

Я создаю веб-сайт для школы, и мне нужен список пользователей, у которых не указано 2 родителя. Это будет SQL-запрос:

SQL

 SELECT * FROM users
WHERE user_rol = 4
AND user_id IN 
(SELECT parent_user_id FROM user_parents
GROUP BY parent_user_id
HAVING COUNT(parent_user_id) < 2);
  

Я пытаюсь использовать LINQ для того же запроса, но я не знаю, как использовать HAVING с LINQ. На данный момент это была моя ближайшая попытка.

ВЛОЖЕННЫЙ ЗАПРОС ДЛЯ IN

 List<long> usersWithTwoParentsIds = (from currentStudents in contexto.user_parents
select currentStudents.parent_user_id).ToList<long>();
--HELP! having count(currentStudents.parent_user_id) < 2
  

ЗАПРОС

 List<vw_user> userList = (from currentStudents in contexto.vw_user
where !usersWithTwoParentsIds.Contains(currentStudents.user_id)
amp;amp; currentStudents.group_id == groupID select currentStudents).ToList<vw_user>()
  

Кто-нибудь может дать подсказку? Спасибо 🙂

Ответ №1:

Что-то вроде этого:

 var usersWithTwoParentsIds = (
    from userParent in contexto.user_parents
    group userParent by userParent.parent_user_id into userParentGroups
    where userParentGroups.Count() < 2
    select userParentGroups.Key)
    .ToList();
  

Ответ №2:

Предполагая, что ключевые отношения являются правильными в контексте ваших данных:

 var dat = Context.Users.Where( u => u.Parents.Count() < 2 );