EntityFramework Core Subquery - PullRequest
       1

EntityFramework Core Subquery

0 голосов
/ 12 февраля 2020

Я новичок в Entity Framework Core и не знаю, как перевести ниже SQL запрос на использование EF. Ниже приведен мой запрос:

SELECT *
FROM Project
WHERE Project_Id IN(

    SELECT Project_Id
    FROM IP
    GROUP BY Project_Id
    HAVING COUNT(Project_Id)<= 2
)

Я пробовал приведенный ниже скрипт, но возвращает все записи из таблицы проекта.

var projs = _context.Project
    .FromSqlRaw("SELECT * FROM Project WHERE Project_Id IN(SELECT Project_Id FROM IP GROUP BY Project_Id HAVING COUNT(Project_Id)<= 2)")
    .ToList();

Любая помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы можете попробовать этот способ

var groupByCount = _context.IP.GroupBy(p => p.Project_Id)
                              .Select(g => new { Project_Id = g.Key, Count = g.Count() })
                              .ToList();
var Project_Ids = groupByCount.Where(p => p.Count <= 2).Select(p => p.Project_Id)
                               .ToArray(); 

var projs  = (from p in _context.Project
             where Project_Ids.Contains(p.Project_Id)
             select p).ToList(); 
1 голос
/ 12 февраля 2020

Если я угадаю вашу модель ER, это должно сработать:

_context.Project.Where(proj=> proj.IP.Count <= 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...