c# - 获取前 5 个频繁值及其总数 Linq-to-Sql
问题描述
我正在使用这个 Linq to sql 来获取出现最多的记录。
List<int> result;
result = await context.InvoiceItems.GroupBy(q => q.ProductID)
.OrderByDescending(gp => gp.Count())
.Take(5)
.Select(g => g.Key).ToListAsync();
并获取 int 类型值。但我也想获得每个值出现的总次数。就像这个 SQL 查询正在返回。
select productID, Count(*) AS value_occurrence from InvoiceItems group by productID
看这张桌子图片
解决方案
您需要分组ProductID
,然后将结果投影到Sample
类中,一个属性为.Key
,第二个属性为.Count()
。
List<Sample> result = await context.InvoiceItems.GroupBy(q => q.ProductID)
.OrderByDescending(gp => gp.Count())
.Take(5)
.Select(g => new Sample { ProductID = g.Key, Value_Occurence = g.Count() }).ToListAsync();
result.ForEach(x => Console.WriteLine($"ID: {x.ProductID}, \t Value_Occurence: {x.Value_Occurence}"));
您可以将结果投影到下面的示例类中。
class Sample
{
public int ProductID { get; set; }
public int Value_Occurence { get; set; }
}
输出:每个productID只输入一个InvoiceItem
。
推荐阅读
- ios - Swift 相当于 Ruby 的 Concurrent::Event?
- postgresql - postgres - UPDATE 被另一个表上的 SELECT 锁定
- excel - 匹配包含数组中第 N 个最大值的工作表名称的问题
- html - 将页脚推到短页面的底部
- ios - 为什么我的 Flutter 应用无法在 iPhone 上运行?
- reactjs - Redux:useSelector 返回未定义
- elasticsearch - 查看 JSON 结果或 ES 查询对象?
- python-3.x - 需要对 seaborn 的热图和 kdeplot 强制重叠
- python - pandas 为每个 ID 生成唯一值的排序列表
- bootstrap-4 - 没有滚动的整页水平划分为多个部分