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。
我有 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。