EF Linq 包括最后一个

EF Linq include last

我有 2 个表,一个是城市,另一个是城市的 temperature/date 值,一个城市可以有多个日期和温度。

如何通过 EF + linq 获取城市 + 每个城市的最新温度

类似于:_context.city.include(x=> x.temperature().last());

您可以通过在 Select 表达式中将城市和最后温度投影到新对象来实现此目的。您在问题中包含的代码片段缺少一些步骤,因此我将猜测您的数据结构:

await _context.Cities.Select(city => new
{
    City = city,
    LastTemperature = city.Temperatures
                         .OrderByDescending(t => t.DateRecorded)
                         .FirstOrDefault(),
}).ToListAsync();

您始终应该通过选择 属性 来控制哪个温度是“最后”的。这样做,在 Include 中使用 Take(1) 是有意义的,例如获取最近的一个:

_context.Cities
    .Include(x=> x.Temperatures.OrderByDescending(t => t.Date).Take(1));

Filtered/ordered Include 支持 .

由于您已经按照这些思路进行了尝试,我假设您使用的是 EFC 5 或 6。