У меня есть следующий запрос типа linq.
var querymiangin = (from t1 in _context.Apiapplicant
join t2 in _context.ApiApplicantHistory on t1.Id equals t2.ApiApplicantId
join t3 in _context.EntityType on t2.LastReqStatus equals t3.Id
where t1.IsDeleted == false && t1.LastRequestStatus == t2.Id && t3.Name == "granted"
select new { A = t1, B = t2, Year = t1.ApiRequestDate.Substring(0, 4), Month = t1.ApiRequestDate.Substring(5, 2) } into joined
group joined by new { joined.Year, joined.Month, joined.B.LastReqStatus } into grouped
select grouped.Select(g => new { ApiReqDate = g.A.ApiRequestDate, ApiDate = g.B.Date, ApiLastReqStatus = g.B.LastReqStatus, ApiYear = g.Year, ApiMonth = g.Month })).ToList();
В части выбора ApiReqDate и ApiDate имеют несколько записей. Теперь моя проблема для каждой группы месяца и года, у меня есть несколько записей ApiDate и ApiReqDate, и я хочу для каждой группы на основе условия (t1.LastRequestStatus == t2.Id && t3.Name == "предоставлено") с использованием GetPersianDaysDiffDate (), получить разницу между ApiReqDate и соответствующими записями ApiDate за каждый месяц, а затем найти их среднее значение за этот месяц.
Для этого я написал такой код:
var avgDateDiff = querymiangin.DefaultIfEmpty()
.GroupBy(x => new { x.ApiYear, x.ApiMonth }, (key, g) => new
{
key.ApiYear,
key.ApiYear,
Avg = g.Average(y => GetPersianDaysDiffDate(y.ApiReqDate,y.ApiDate))
})
.ToList();
Но проблема в том, что каждый параметр x.ApiYear, x.ApiMonth, y.ApiReqDate, y.ApiDate неизвестен, и он показывает мне ошибку. Буду признателен, если кто-нибудь может предложить мне решение этой проблемы.