gpt4 book ai didi

LINQ 错误 Group by sum 上的列名无效

转载 作者:行者123 更新时间:2023-12-01 04:46:48 26 4
gpt4 key购买 nike

出于某种原因,当在 group by 上使用两个总和时,我遇到错误“无效的列名‘id’。当我只做一个总和时,它按预期工作。

以下失败并抛出错误:

from pd in PrDetails.Where(_pd => _pd.PrId == 46)
group pd by new { pd.ProgramFund, pd.ProjectDetail.CostCenter, pd.ProjectDetail.Wbs }
into g
select new
{
g.Key.ProgramFund,
g.Key.CostCenter,
g.Key.Wbs,
CommittedTotal = g.Sum(_pd => _pd.PrDetailPrAmounts.Sum(_pa => _pa.CommittedAmount)),
OverheadTotal = g.Sum(_pd => _pd.PrDetailPrAmounts.Sum(_pa => _pa.OverheadAmount))
}

但是,以下确实工作正常:

from pd in PrDetails.Where(_pd => _pd.PrId == 46)
group pd by new { pd.ProgramFund, pd.ProjectDetail.CostCenter, pd.ProjectDetail.Wbs }
into g
select new
{
g.Key.ProgramFund,
g.Key.CostCenter,
g.Key.Wbs,
CommittedTotal = g.Sum(_pd => _pd.PrDetailPrAmounts.Sum(_pa => _pa.CommittedAmount))
}

而且,当我得到开销总额而不是 promise 总额时,效果很好:

from pd in PrDetails.Where(_pd => _pd.PrId == 46)
group pd by new { pd.ProgramFund, pd.ProjectDetail.CostCenter, pd.ProjectDetail.Wbs }
into g
select new
{
g.Key.ProgramFund,
g.Key.CostCenter,
g.Key.Wbs,
OverheadTotal = g.Sum(_pd => _pd.PrDetailPrAmounts.Sum(_pa => _pa.OverheadAmount))
}

为什么不能同时获取 promise 总额和开销总额?

我的基本表结构如下:

公关详情

ID(整数)
标识符(整数)
ProgramFund(linq类)
ProjectDetail(linq 类)

项目详情

ID(整数)
成本中心(linq类)
WBS(linq类)

PrAmounts

ID(整数)
PrDetailId (int)
CommittedAmount (十进制)
开销金额(十进制)

最佳答案

您应该启动一个 SQL 分析器并检查正在生成的确切 SQL,这应该会引导您朝着正确的方向前进

关于LINQ 错误 Group by sum 上的列名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com