#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 );