У меня есть SQL-запрос следующего типа, и я пытался извлечь данные в моем приложении C# с помощью LINQГруппа по агрегатных функций в LINQ
select
sum(CASE when outcome = 0 then samplingweight else 0 end) tpcount,
sum(CASE when outcome = 1 then samplingweight else 0 end) fpcount,
sum(CASE when outcome = 2 then samplingweight else 0 end) mismatch,
sum(CASE when outcome = 3 then samplingweight else 0 end) fncount,
sum(CASE when outcome = 4 then samplingweight else 0 end) tncount,
sum(samplingweight) totalweight,
__date,
scenario from MyTable
where __date = '30-Dec-16 12:00:00 AM' and scenario = 'parcels'
group by __date, scenario
Примечание: samplingweight
является двойным значением в БД.
Я пытался и смог добраться до ниже состояния
from pr in this.context.ComputedPrSet
where
pr.Date.Equals(date) && pr.Scenario.Equals(scenario)
group pr by new { pr.Date, pr.Scenario }
into grp
select new
{
grp.Key.Date,
grp.Key.Scenario,
TruePositiveCount = grp.Sum(x => x.SamplingWeight) //I am stuck here. Not sure how to aggregate the properties
};
ПРИМЕЧАНИЕ: date
и scenario
в приведенном выше запросе LINQ принимаются в качестве параметров функции, выполняющейся.
Любые идеи или советы о том, как действовать?
'grp.Where (x => x.outcome == 1) .Sum (x => x.SamplingWeight) ' – Magnus