Attualmente sto lavorando con questo schema
Ecco come appare il mio LINQ al momento
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)
});
questo è ciò che sta attualmente producendo, anche se errato
Questo è quello che mi serve per essere ...
So che il problema è con questa linea, essenzialmente
join q in _context.Regions on g.Key equals _context.Regions.First().Id
Non so come farlo senza l'uso di .First (), non sembra esserci un modo per farlo. Sono vicino, non so come finire questo.
Se hai una collezione di ProjectRegions
nella tua entità Region
, puoi farlo:
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
entità ProjectRegion
deve avere due proprietà nav, Project
e Region
, usarle per navigare e creare le condizioni corrispondenti