I have the following SQL query which I want to translate to EF query
Select Year(_r.IssueDate) as Year, datepart(qq, _r.IssueDate) as Quarter,count(*) as TotalBillableRecords, SUM(_r.BillableHours) as TotalHOurs
FROM
    (select _b.Name, _i.IssueDate, _ie.BillableHours from Beneficiaries _b 
      join [Beneficiaries.Invoices] _i on _b.Id = _i.BeneficiaryId
      join [Beneficiaries.Invoices.Entries] _ie on _ie.InvoiceId = _i.Id
      where BeneficiaryId = 1) as _r
group by Year(_r.IssueDate), datepart(qq, _r.IssueDate)
This results in this
And this is what I would also want to have in my linq expression
How can I translate this to EF query ? I've tried like so
        var query =
           from beneficiary in _dbContext.Beneficiaries
           where beneficiary.Id == beneficiaryId
           from invoice in beneficiary.Invoices
           //where invoice.IssueDate >= since
           //where invoice.IssueDate.Month > notBefore && invoice.IssueDate.Month <= notAfter
           from invoiceEntry in invoice.InvoiceEntries
           group new
           {
               beneficiary,
               invoiceEntry,
           }
           by new
           {
               Year = beneficiary.InvoiceMeta.IssueDate.Year,
               Quarter = (beneficiary.InvoiceMeta.IssueDate.Month - 1)  / 3 + 1,
           }
           into @group
           select new
           {
               Year = @group.Key.Year,
               Quarter = @group.Key.Quarter,
               Hours = @group.Sum(x => x.invoiceEntry.BillableHours),
           };
        var y = query.ToList();
But the result is as following
[0] = Quarter = 3, Year = 2022, Hours = 6729.0
And this is it, only one entry.
What I'm noticing is that it only takes the last quarter composed of 3 months, (because the last would be the one which is not finished yet)
The class hierarchy is
Beneficiary 1-* Invoice 1-* Entries
