C# 如何获得浏览量最高的前五名产品?
我是LINQ的新手,正在尝试用MVC和LINQ建立一个网站。我想展示视图最多的前5种产品。我有如下两个表格,我正在尽可能简单地解释C# 如何获得浏览量最高的前五名产品?,c#,.net,asp.net-mvc,linq,C#,.net,Asp.net Mvc,Linq,我是LINQ的新手,正在尝试用MVC和LINQ建立一个网站。我想展示视图最多的前5种产品。我有如下两个表格,我正在尽可能简单地解释 PRODUCT ------- ID NAME PRODUCT_VIEWS_TABLE ------- ID PRODUCT_ID 每次查看产品时,我都会在product\u VIEWS\u表中插入新行。如何为此编写LINQ查询 (from c in db.PRODUCT select c).Take(5) 这个怎么样: var top5 = productV
PRODUCT
-------
ID
NAME
PRODUCT_VIEWS_TABLE
-------
ID
PRODUCT_ID
每次查看产品时,我都会在product\u VIEWS\u表中插入新行。如何为此编写LINQ查询
(from c in db.PRODUCT select c).Take(5)
这个怎么样:
var top5 = productViews
.GroupBy(view => view.ProductId) // group views by product
.OrderByDescending(g => g.Count()) // order from most- to least-viewed
.Take(5) // take the top 5
.Select(g => g.First().Product); // fetch the corresponding product
试试这个:
var topProducts = m_context.PRODUCTS
.Join(m_context.PRODUCT_VIEW, product=> product.Id, view => view.ProductId,
(product, view ) => new { ProductId = product.Id, ViewId = view.Id})
.GroupBy(g => g.ProductId)
.Select(s => new {
Id = s.Key,
ViewCount= s.Count()
})
.OrderByDescending(o => o.ViewCount)
.Take(5).ToList();
.Select()和.OrderByDescending()行不编译.first。从顶部选择,然后从其下方选择..OrderByDescending。它说的是“无效匿名…”,这在问题中没有规定。我刚才提到了更多信息,+1表示更简单的LINQ
var topProducts = m_context.PRODUCTS
.Join(m_context.PRODUCT_VIEW, product=> product.Id, view => view.ProductId,
(product, view ) => new { ProductId = product.Id, ViewId = view.Id})
.GroupBy(g => g.ProductId)
.Select(s => new {
Id = s.Key,
ViewCount= s.Count()
})
.OrderByDescending(o => o.ViewCount)
.Take(5).ToList();