【问题标题】:how to query a record with latest date as part of another linq query如何查询具有最新日期的记录作为另一个 linq 查询的一部分
【发布时间】:2020-09-09 02:01:06
【问题描述】:

我正在使用如下的 EF linq 查询 Movie 记录可以有很多 Reviews

var movieSummaries = _db.Movies.AsNoTracking().Select(l => new MovieSummary
            {
                Name = l.Name,                
                Rating = l.Reviews.OrderByDescending(r => r.Date).First().ReviewText
            });

但是,我不需要先订购日期,我只需要最晚日期的评论。有没有办法以更优化的方式做到这一点?

【问题讨论】:

  • 我认为您的评论已经在按日期排序中检索到。所以在这种情况下你可以采取.Last()

标签: c# .net linq entity-framework-6


【解决方案1】:

您可以尝试使用 linq 辅助变量,并与最大日期评论进行比较。

类似这样的:

var moviesSumaries = from m in Movies
let Rating = m.Reviews.FirstOrDefault(d => .Date==m.Reviews.Max(s=>s.Date))?.ReviewText        
          select new {m.Name, Rating};

如果你愿意,你也可以使用 lambda 表达式。

就个人而言,我认为您使用 orderbydescending 的建议是正确的。总是依赖于场景、表中的行数、数据库索引等...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多