I am trying to select "highest" licence user has per year.
I started with:
var lic = _context.Licences
.Where(l => l.MemberNumber == memberNumber)
.GroupBy(l => new { l.LicenceYear }
(key, g) => g.OrderByDescending(l => l.ProfessionalTitleId)
.First());
and it works.
However it always returns ALL columns from Licence which I don't want. Moreover I would like to select some child property like l.Title.TitleNumber, but no matter where I put .Select(l => new {l.LicenceNumber, l.Title.TitleNumber}) generated sql query selects all columns from Licences, and only from Licences.
I have also tried
var lic = _context.Licences
.Where(l => l.MemberNumber == User.GetMemberNumber())
.GroupBy(l => new { l.LicenceYear },
l => new { l.Title.TitleNumber, l.LicenceYear, l.LicenceNumber, l.Title.ProfessionalTitleId },
(key, g) => g.OrderByDescending(l => l.ProfessionalTitleId)
.First());
Interestingly enough it properly creates ROW_NUMBER() using ProfessionalTitleId from Title but still selects all columns from Licences.
So, how to modify query to select only some columns?