【发布时间】:2019-06-11 01:21:29
【问题描述】:
我有一个想要传递给 Razor 视图的 MVC ViewModel。在控制器中,我创建了一个数据库上下文并使用 Linq 将表连接在一起。汇总和分组后,出现错误:
错误 CS1061 'decimal' 不包含 'GroupBy' 的定义,并且找不到接受第一个参数类型为 'decimal' 的可访问扩展方法 'GroupBy'(您是否缺少 using 指令或程序集引用?
我已经浏览了几乎所有关于堆栈溢出和 google 的示例,但找不到与我的查询结构相匹配的示例。另外,MS 的例子很琐碎,用处不大。
这是控制器中的操作:
public IHttpActionResult GetEmployeeReleasedAllocatedBonus(int eid)
{
var employeeReleasedAllocatedBonus =
(from br in _context.BonusReleases
join emp in _context.Employees
on new
{
br.EmployeeID,
empID = br.EmployeeID
} equals new
{
emp.EmployeeID,
empID = eid
}
join job in _context.Jobs on br.JobID equals job.JobID
join bonus in _context.Bonus
on new
{
br.JobID,
empID = br.EmployeeID
}
equals new
{
bonus.JobID,
empID = bonus.EmployeeID
}
select new EmployeeAllocatedReleasedBonusViewModel()
{
AllocatedToEmployee = br.Amount, AllocatedPercentage = bonus.Amount * 100
,
JobNumber = job.JobNumber, JobDescription = job.JobDescription
})
.ToList()
.Sum(s => s.AllocatedToEmployee)
.GroupBy(g => new {g.JobNumber, g.JobDescription, g.AllocatedPercentage});
return Ok(employeeReleasedAllocatedBonus);
}
值得一提的是,AllocatedPercentage 数据类型是小数。但是,我尝试将其更改为字符串,但错误消息仍然存在。
还尝试在 .ToList() 之前使用组功能,但这也不起作用。
【问题讨论】:
-
我想知道
bonus.Amount * 100是否导致了问题。你的select new应该是这样的:select new { br, bonus, job }比在ToList()之后返回字段并进行计算。 -
.Sum(s => s.AllocatedToEmployee)会返回一个十进制值,你怎么再分组呢。 -
Harisyam,我会为您提供帮助,但您的评论不是很有建设性。
-
嗨 Flavio,我删除了 *100 但错误仍然存在。从我收集的问题来看,我将 SUM 的结果(即小数)传递给 GroupBy - 它不包含 GroupBy 的方法。
标签: linq model-view-controller group-by controller viewmodel