我正在使用这个 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; }
}
Output:仅输入一个InvoiceItem
对于每个产品ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)