Tengo 2 tablas, una con ciudades y otra con valores de temperatura/fecha para las ciudades, una ciudad puede tener varias fechas con temperatura.
como podria por EF + linq traer las ciudades + la temperatura mas reciente de cada una
algo como: _context.city.include(x=> x.temperature().last());
Podría lograr esto proyectando la ciudad y la última temperatura a un nuevo objeto, en una expresión Select . Al fragmento de código que incluiste en tu pregunta le faltan algunos pasos, así que voy a adivinar tus estructuras de datos:
await _context.Cities.Select(city => new { City = city, LastTemperature = city.Temperatures .OrderByDescending(t => t.DateRecorded) .FirstOrDefault(), }).ToListAsync();Siempre debe controlar qué temperatura es la "última" ordenándolas por una propiedad elegida. Al hacerlo, tiene sentido usar Take(1) en Include , por ejemplo, para obtener el más reciente:
_context.Cities .Include(x=> x.Temperatures.OrderByDescending(t => t.Date).Take(1)); La Include filtrada/ordenada es compatible a partir de EF core 5 .
Como ya está intentando algo similar, supongo que está usando EFC 5 o 6.