Ho ottenuto una query SQL taf che dovrebbe essere eseguita nell'ultima versione di entity-framework core (dotnet core 2) utilizzando l'ultimo provider postgres:
SELECT
date_trunc('day', "StartTime") AS DAY
, sum("AnswerTime" - "StartTime")
, count("AnswerTime" != "ReleaseTime")
FROM "Cdrs"
GROUP BY DAY
ORDER BY DAY;
Potrei parzialmente risolverlo ma non sono in grado di completare l'intera query. principalmente la somma di un valore calcolato non ho idea di come risolvere.
Conta anche con una condizione, senza sapere come fare nel core EF
Sto cercando di risolverlo con linq a sql come questo (non sono sicuro che comunque funzionerà comunque):
[SuppressMessageAttribute("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "dateValue")]
[DbFunctionAttribute("date_trunc")]
public extern static DateTimeOffset? date_trunc(string what, DateTimeOffset? dateValue);
var x = (from c in ef.Cdrs
group c by date_trunc("day", c.StartTime) into day
//group c by (c.AnswerTime - c.StartTime) into g
select new { day.Count( })
qualsiasi suggerimento su come portare l'SQL sopra nel nucleo di entità-quadro (dotnet 2) è apprezzato.
Prova qualcosa del genere;
var query = ef.Cdrs
.GroupBy(x => new { Day = date_trunc("d", x.StartTime) })
.Select(x => new
{
Day = x.Key.Day,
Sum = x.Sum(s => s.AnswerTime - s.StartTime),
Count = x.Count(c => c.AnswerTime != c.ReleaseTime)
});