LINQ错误Group by sum上的列名无效
出于某种原因,在对分组依据使用两个求和时,我遇到了错误“无效列名'id'。当我只进行一个求和时,它会按预期工作 以下操作失败并抛出错误:LINQ错误Group by sum上的列名无效,linq,linq-to-sql,Linq,Linq To Sql,出于某种原因,在对分组依据使用两个求和时,我遇到了错误“无效列名'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.
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))
}
还有,当我得到的是开销总额而不是承诺总额时,效果非常好:
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))
}
为什么我不能同时得到承诺总额和间接费用总额
我的基本表格结构如下:
详细资料
Id(int)PrId(int)
计划基金(linq类)
项目详细信息(linq类) 项目详情 Id(int)
成本中心(linq级)
Wbs(linq类) 普拉蒙特 Id(int)
PrDetailId(int)
委员会数量(十进制)
OverdeAmount(decimal)关于我唯一能想到的可能是与参数名称冲突。请尝试以下方法:
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(_pd1 => _pd1.PrDetailPrAmounts.Sum(_pa1 => _pa1.CommittedAmount)),
OverheadTotal = g.Sum(_pd2 => _pd2.PrDetailPrAmounts.Sum(_pa2 => _pa2.OverheadAmount))
}
您应该启动一个SQL探查器并检查要生成的确切SQL,这将引导您走向正确的方向您是否为任何表设置了任何关联/关系?是的,所有关系都存在。如果没有这些关系,最后两个LINQ查询将无法运行成功。