我正试图在我的.net环境中执行一个查询,
因此,我将其转换为linq等效项,这是SQL查询
SELECT
INFOCENTRE.dbo.issi_ressource.ressourec_text1,
INFOCENTRE.dbo.issi_temps.annee_saisie,
INFOCENTRE.dbo.issi_temps.mois_saisi,
INFOCENTRE.dbo.issi_temps.semaine_saisie,
INFOCENTRE.dbo.issi_temps.jour_saisi,
INFOCENTRE.dbo.issi_engagement.engagement_nom,
INFOCENTRE.dbo.issi_projet.projet_nom,
INFOCENTRE.dbo.issi_tache.tache_nom,
(sum(INFOCENTRE.dbo.issi_temps.nbre_jour))/8
FROM
INFOCENTRE.dbo.issi_ressource INNER JOIN INFOCENTRE.dbo.issi_temps ON (INFOCENTRE.dbo.issi_temps.ressource_id=INFOCENTRE.dbo.issi_ressource.ressource_id)
INNER JOIN INFOCENTRE.dbo.issi_tache ON (INFOCENTRE.dbo.issi_temps.tache_id=INFOCENTRE.dbo.issi_tache.tache_id)
INNER JOIN INFOCENTRE.dbo.issi_projet ON (INFOCENTRE.dbo.issi_projet.projet_id=INFOCENTRE.dbo.issi_tache.projet_id)
INNER JOIN INFOCENTRE.dbo.issi_engagement ON (INFOCENTRE.dbo.issi_projet.engagement_id=INFOCENTRE.dbo.issi_engagement.engagement_id)
WHERE
(
INFOCENTRE.dbo.issi_tache.tache_nom NOT IN ('Control for Complement day or week', 'Holidays (for internal only)', 'Miscellaneous absences (for internal only)', 'Part time (for internal only)', 'Sick time and job injuries (for internal only)')
AND INFOCENTRE.dbo.issi_ressource.ressourec_text1 = 'EDCL'
AND INFOCENTRE.dbo.issi_temps.jour_saisi >= '2016-03-01'
AND INFOCENTRE.dbo.issi_temps.jour_saisi < '2016-04-01'
)
GROUP BY
INFOCENTRE.dbo.issi_ressource.ressourec_text1,
INFOCENTRE.dbo.issi_temps.annee_saisie,
INFOCENTRE.dbo.issi_temps.mois_saisi,
INFOCENTRE.dbo.issi_temps.semaine_saisie,
INFOCENTRE.dbo.issi_temps.jour_saisi,
INFOCENTRE.dbo.issi_engagement.engagement_nom,
INFOCENTRE.dbo.issi_projet.projet_nom,
INFOCENTRE.dbo.issi_tache.tache_nom到目前为止,我已经转换了以下内容:
from ressource in context.issi_ressource
join temps in context.issi_temps on ressource.ressource_id equals temps.ressource_id
join tache in context.issi_tache on temps.tache_id equals tache.tache_id
join projet in context.issi_projet on tache.projet_id equals projet.projet_id
join engagement in context.issi_engagement on projet.engagement_id equals engagement.engagement_id
where
ressource.ressourec_text1 == "EDCK" &&
temps.jour_saisi <= new DateTime(2016, 03, 01) &&
temps.jour_saisi < new DateTime(2016, 04, 01) &&
tache.tache_nom != "Control for Complement day or week" &&
tache.tache_nom != "Holidays (for internal only)" &&
tache.tache_nom != "Miscellaneous absences (for internal only)" &&
tache.tache_nom != "Part time (for internal only)" &&
tache.tache_nom != "Sick time and job injuries (for internal only)"
group ressource by new {
ressource.ressourec_text1,
temps.annee_saisie,
temps.mois_saisi,
temps.semaine_saisie,
temps.jour_saisi,
engagement.engagement_nom,
projet.projet_nom,
tache.tache_nom
} into res
select res;但是现在我想把nbre_jour和除以8,有没有人知道怎么做?
发布于 2016-04-04 21:20:53
首先,您确实希望根据这些值对nbre_jour进行分组,以便可以进行求和。
group temps.nbre_jour by ...那么你的选择就是
select new
{
res.Key.ressourec_text1,
res.Key.annee_saisie,
...
GiveThisAName = res.Sum()/8
}想象一下Linq的小组是这样的
分组依据
在有多个要聚合的列的情况下,它将需要聚合函数中的lambda,如下所示
group new { col1, col2 } by ... into grp
select new
{
grp.Key,
Col1Sum = grp.Sum(x => x.col1),
Col2Avg = grp.Average(x => x.col2)
}https://stackoverflow.com/questions/36403676
复制相似问题