gpt4 book ai didi

linq - 如何获取按计数列排序的组

转载 作者:行者123 更新时间:2023-12-04 22:51:44 25 4
gpt4 key购买 nike

很难用简单的英语问这个问题,所以我会展示我正在尝试做的事情。

这是我的 SQL 代码:

select top 100 [Name], COUNT([Name]) as total from ActivityLog  
where [Timestamp] between '2010-10-28' and '2010-10-29 17:00'
group by [Name]
order by total desc

我需要在 LinQ 中编写它。到目前为止,我有以下几点:
var groups = from ActivityLog log in ctx.ActivityLog
where log.Timestamp > dateFrom
where log.Timestamp <= dateTo
group log by log.Name;

但我没有 COUNT(*) 列可供排序:(

最佳答案

diceguyd30's answer 在技术上是 LINQ 并且是正确的。事实上,查询语法被编译器转换为那些 Queryable/Enumerable 方法。也就是说缺少的是使用 group ... by ... into syntax 。等效的查询应该接近这个:

var query = from log in ctx.ActivityLog
where log.TimeStamp > dateFrom && log.TimeStamp <= dateTo
group log by log.Name into grouping
orderby grouping.Count() descending
select new { Name = grouping.Key, Total = grouping.Count() };

var result = query.Take(100);

请注意,在 C# 中, Take(100) 方法在查询语法中没有等效项,因此您必须使用扩展方法。另一方面,VB.NET 在查询语法中支持 TakeSkip

关于linq - 如何获取按计数列排序的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070032/

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