public List <ChatMessageViewModel> GetChatMessages() { var nowdt = DateTime.Now; var pre24dt = DateTime.Now.AddDays(-1); var messages = from p in _chatMessageRepository.GetAllQueryable() join u in _userRepository.GetAllQueryable() on p.DriverUserId equals u.Id into pu from u in pu.DefaultIfEmpty() join d in _driverRepository.GetAllQueryable() on u.DriverC equals d.DriverC into pdu from d in pdu.DefaultIfEmpty() where p.Create_At > pre24dt && p.Create_At < nowdt select new ChatMessageViewModel() { Id = p.Id, UserId = p.UserId, DriverUserId = p.DriverUserId, DriverN = !p.IsDriver & p.DriverUserId == "ALL" ? "ALL" : (d != null ? d.LastN + " " + d.FirstN : ""), Message = p.Message, Create_At = p.Create_At, IsDriver = p.IsDriver }; // sorting (done with the System.Linq.Dynamic library available on NuGet) var messagesOrdered = messages.OrderBy("Create_At descending"); //var messagesLimited = messagesOrdered.Skip(0).Take(20); var result = messagesOrdered.OrderBy("Create_At ascending").ToList(); return(result); }