我想要转换的SQL查询是:
选择p.PhoneNumber_Id,p.State,p.Created来自PhoneNumberServiceItems p在p.PhoneNumber_Id = PhoneNumbers.Id上加入PhoneNumbers内部联接 ( 选择 …
尝试以下更简单的方法:
var res = (from nums in _db.PhoneNumbers.Where(x => NumberRangeId == id) join serviceItems in _db.PhoneNumberServiceItems on nums.PhoneNumber_Id equals serviceItems.Id select new {serviceItems = serviceItems, nums = nums}) .OrderByDescending(x => x.serviceItems.Created) .GroupBy(x => x.nums.PhoneNumber_Id) .Select(x => x.First()) .Select(x => new {Id = x.nums.PhoneNumber_Id, state = x.serviceItems.State, maxDate = x.serviceItems.Created}) .ToList();
var recentPhoneNos= from psi in _db.PhoneNumberServiceItems group psi by psi .PhoneNumber_Id into psiTemp select new { PhoneNumber_Id = psiTemp.Key, MaxDate = psiTemp.Max(i=> i.Created) }; var res=from serviceItems in _db.PhoneNumberServiceItems join nums in _db.PhoneNumbers on serviceItems.PhoneNumber_Id equals nums.Id join serviceGroup in recentPhoneNos on nums.Id equals serviceGroup .PhoneNumber_Id where nums.NumberRangeId == id && serviceGroup.MaxDate select new { State = serviceItems.State, NumId = serviceGroup.NumId, Created = serviceGroup.MaxDate } ;