Filtro com Linq ou Lambda utilizando Join e Group By
Boa Tarde
Em uma tabela onde sempre é inserido novos registros podem ocorrer de ter a mesma Date e o mesmo RateCode, porém eu quero pegar uma lista dessa tabela mas para cada grupo Date, RateCode gostaria que me retornasse o último registro inserido, garantindo que vai ser sempre a última linha inserida, como estou utilizando Entity Framework não posso rodar a query para me retornar o resultado, acredito ser melhor usar lambda ou LINQ para filtrar os dados, porém, não tenho muita experiência em usos complexos e até o momento não estou conseguindo implementar a lógica, em SQL filtraria dessa forma do jeito mais simples.
Em uma tabela onde sempre é inserido novos registros podem ocorrer de ter a mesma Date e o mesmo RateCode, porém eu quero pegar uma lista dessa tabela mas para cada grupo Date, RateCode gostaria que me retornasse o último registro inserido, garantindo que vai ser sempre a última linha inserida, como estou utilizando Entity Framework não posso rodar a query para me retornar o resultado, acredito ser melhor usar lambda ou LINQ para filtrar os dados, porém, não tenho muita experiência em usos complexos e até o momento não estou conseguindo implementar a lógica, em SQL filtraria dessa forma do jeito mais simples.
select a.* from DailyRates a join (select Max(Id) as Id, Date, RateCode from DailyRates where RoomTypeId = 79 group by Date, RateCode) b on a.id = b.id
Lucas Ramos
Curtidas 1
Melhor post
Lucas Ramos
11/05/2017
Bom consegui resolver com LINQ, primeira lista capturo do banco com os filtros e linhas duplicadas, na segunda filtro somente as linhas mais recentes com os registros mais atuais inseridos.
List<DailyRate> dailyRates = oDailyDao.All().Where(x => x.RoomTypeId == dailyRate.RoomTypeId && x.RoomType.Company.SeriesNumber == sSeriesNumber).ToList(); List<DailyRate> dailyRatesFiltro = (from a in dailyRates join b in (from x in dailyRates group x by new { x.Date, x.RateCode } into z select new { Id = z.Max(a => a.Id) }) on a.Id equals b.Id select a).ToList();
GOSTEI 1