我正在使用此Linq到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
查看此表格图片
答案 0 :(得分:1)
您需要按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; }
}
输出:每个产品ID只能输入一个InvoiceItem
。