gpt4 book ai didi

c# - 将具有多个 GroupBy 列的 SQL 查询转换为 LINQ

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:39 25 4
gpt4 key购买 nike

SELECT 
[TimeStampDate]
,[User]
,count(*) as [Usage]
FROM [EFDP_Dev].[Admin].[AuditLog]
WHERE [target] = '995fc819-954a-49af-b056-387e11a8875d'
GROUP BY [Target], [User] ,[TimeStampDate]
ORDER BY [Target]

我的数据库表包含 User、TimeStampDate 和 Target(这是一个 GUID)列。

我想检索每个用户每个日期的所有项目并显示条目数。

上面的 SQL 查询有效。如何将其转换为 LINQ to SQL?我正在使用 EF 6.1,我在 C# 中的实体类具有以上所有列。

Create Filter 基本上返回整个 AuditLogSet 的 IQueryable:

using (var filter = auditLogRepository.CreateFilter())
{
var query = filter.All
.Where(it => it.Target == '995fc819-954a-49af-b056-387e11a8875d')
.GroupBy(i => i.Target, i => i.User, i => i.TimeStamp);
audits = query.ToList();
}

我不允许在 LINQ 中对 3 列进行分组,我也不确定如何像上面带有计数的 SQL 查询那样进行选择。 LINQ 相当新。

最佳答案

您需要在匿名类型中按列指定分组,如下所示:-

var query = filter.All
.Where(it => it.Target == '995fc819-954a-49af-b056-387e11a8875d')
.GroupBy(x => new { x.User, x.TimeStampDate })
.Select(x => new
{
TimeStampDate= x.Key.TimeStampDate,
User = x.Key.User,
Usage = x.Count()
}).ToList();

关于c# - 将具有多个 GroupBy 列的 SQL 查询转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32507002/

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