Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得浏览量最高的前五名产品?_C#_.net_Asp.net Mvc_Linq - Fatal编程技术网

C# 如何获得浏览量最高的前五名产品?

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

我是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 = 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();