gpt4 book ai didi

c# - 具有多个表的 Linq

转载 作者:行者123 更新时间:2023-11-30 16:59:58 25 4
gpt4 key购买 nike

在ASP.Net MVC 4中使用Entity Framework,需要用linq输出一行信息。

我有一个 ArticleView 表和一个 Article 表。我需要输出一篇 24 小时内活跃度最高的文章。

这是我的 ArticleView 表:

int ArticleID
DateTime ViewCreated

文章表:

int ID
string title

示例数据:

ArticleView:
ArticleID ViewCreated
2 4/8/2014 1:48:40 PM
2 4/8/2014 1:50:40 PM
2 4/8/2014 1:55:20 PM
3 4/8/2014 12:07:30 PM

注意:一旦有人查看文章,就会自动生成 ViewCreated。

Article:
ID Title
2 Article2
3 Article3

预期输出:

24小时内活跃度最高的文章是:

第二条第三款

我必须处理的事情:

var articles = db.Articles;
var articleviews = db.ArticleViews;

只是不确定如何解决这个问题。

最佳答案

像这样:

var viewsById = db.ArticleViews
.Where(av => av.ViewCreated >= startDateTime && av.ViewCreated < endDateTime)
.GroupBy(av => av.ArticleId)
.Select(g => new { ArticleId = g.Key, Count = g.Count() })

var highestCount = viewsById.Max(v => v.Count);

var topArticles = viewsById.Where(a => a.Count == highestCount);

var topArticle = topArticles.First();

var message = String.Format("Article id: {0}, views: {1}",
topArticle.ArticleId, topArticle.Count);
  1. 过滤指定日期范围内的 View 。
  2. 按文章 ID 将它们分组。
  3. 为每一个创建一个匿名对象,存储文章 ID 和该文章的浏览次数。
  4. 选择计数最高的那个。

关于c# - 具有多个表的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22950162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com