LINQ Совокупные результаты со связями «многие ко многим» - PullRequest
0 голосов
/ 06 декабря 2018

Я сейчас работаю с этой схемой enter image description here

Так выглядит мой LINQ в настоящее время

var regionResults = (
                    from p in _context.Projects
                    from pr in p.Regions
                    where (data.RegionId == null || pr.RegionId == data.RegionId)

                    group p by pr.RegionId into g
                    join q in _context.Regions on g.Key equals _context.Regions.First().Id  
                    select new Models.ViewModels.ProjectBreakdownViewModel.Regions
                    {
                        RegionName = q.Name,
                        TotalCount = g.Count(),
                        RejectedCount = g.Count(e => e.SubmissionStatusId == 2),
                        DeniedCount = g.Count(e => e.SubmissionStatusId == 3)
                    });

Это то, что он в настоящее время производит, хотяневерно enter image description here

Это то, что мне нужно, чтобы оно было ...

enter image description here

Я знаюпроблема с этой строкой, по существу

join q in _context.Regions on g.Key equals _context.Regions.First().Id 

Я не знаю, как это сделать без использования .First (), похоже, нет способа сделать это.Я близко, я просто не знаю, как это закончить.

1 Ответ

0 голосов
/ 07 декабря 2018

Если у вас есть коллекция ProjectRegions в вашей Region сущности, вы можете сделать это:

var result= context.Regions
                   .Where(r=> data.RegionId == null || r.Id == data.RegionId)
                   .Select(r=> new  
                               {
                                 RegionName = r.Name,
                                 TotalCount = r.ProjectRegions.Count(),
                                 RejectedCount = r.ProjectRegions.Count(e => e.Project.SubmissionStatusId == 2),
                                 DeniedCount = r.ProjectRegions.Count(e => e.Project.SubmissionStatusId == 3)
                               });

ProjectRegion сущность должна иметь два свойства nav, Project и Region, используйте их для навигации и создания соответствующих условий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...