如何在 LINQ 中分组,而不是选择所有列
本文关键字:选择 LINQ | 更新日期: 2023-09-27 18:36:05
我正在尝试编写一个LINQ查询,这对我来说现在很复杂,因为我是LINQ的新手。
我有一张表格,如下所示...
UserId | CompanyId | ProblemDescription | CreatedTime | TimeSpentMins
-----------------------------------------------------------------------
1 | 95 | Sysmtem is crashed | 2016-01-01 15:23 | 25
1 | 95 | Total is incorrect | 2016-01-01 15:45 | 45
我想编写一个 LINQ 查询来完成下面的工作。创建时间有日期和时间,但我只想按日期对其进行分组。
SELECT UserId, CompanyId,CreateTime Sum(TimeSpentMins)
FROM TransactionLogs
GROUP BY UserId, CompanyId, Convert(DATE,CreatedTime)
如何编写此 LINQ?我想把我的代码放在下面,但我什么也没:(
只需使用 GroupBy 扩展方法并使用 EntityFunctions.TruncateTime 方法仅获取日期部分:
var result = db.TransactionLogs
.GroupBy(x => new
{
CreateTime = EntityFunctions.TruncateTime(x.CreatedTime),
UserId,
CompanyId
})
.Select(x => new
{
UserId = x.Key.UserId,
CompanyId = x.Key.CompanyId,
CreateTime = x.Key.CreateTime,
TotalTimeSpentMins = x.Sum(z => z.TimeSpentMins)
});
试试这个:
var result = db.TransactionLogs
.GroupBy(_ => new {
_.UserId, _.CompanyId, DbFunctions.TruncateTime(_.CreatedTime)})
.Select(_ => new {
_.UserId, _.CompanyId, DbFunctions.TruncateTime(_.CreatedTime),
Total = _.Sum(t => t.TimeSpentMins)});