У меня есть следующий SQL-скрипт, который работает нормально и довольно быстро:
select top 30 CONVERT(date, p.DateCreated) as Fecha,
(select count(*) from People d where d.recipientid = p.recipientid and d.SubscriptionType = 0 and CONVERT(date, p.DateCreated) = CONVERT(date, d.DateCreated)) as Subscribed
from People p
where p.RecipientId = '276643679047355'
group by CONVERT(date, p.DateCreated), p.RecipientId
order by CONVERT(date, p.DateCreated) desc;
Однако, когда я пытаюсь вызвать это из приложения C # с использованием LinQ, оно не отвечает должным образом (на самом деле, после ожидания 5 минут, я должен сказать, что он не отвечает вообще).Я придумал следующую команду LinQ, тем не менее, что-то должно быть не так, потому что она не отвечает так быстро, как предоставленный сценарий SQL:
model = await _context.People
.Where(x => x.RecipientId == recipientId && x.DateCreated > startDate && x.DateCreated < endDate)
.Select(x => new { DateGrouped = x.DateCreated.ToString("yyyy-MM-dd"), x.RecipientId })
.GroupBy(x => new { x.DateGrouped, x.RecipientId })
.Select(a => new StatsViewModel
{
DateStatsFormatted = a.Key.DateGrouped,
Subscribed = _context.People.Where(d => d.RecipientId == a.Key.RecipientId && d.SubscriptionType == SubscriptionType.Suscribed && d.DateCreated.ToString("yyyy-MM-dd") == a.Key.DateGrouped).Count()
}
)
.ToListAsync();
Не могли бы вы помочь мне указать, что я делаюнеправильно или, по крайней мере, подсказать что искать?