Member 13806552 Ответов: 1

C# как группировать записи по метке времени?


Я использую C# NHibernate для создания панели мониторинга, и то, что я пытаюсь сделать, - это сгруппировать записи по меткам времени, чтобы при наличии идентичных меток времени они отображались только один раз. Я пробовал последний раз(t => t.timestamp), но получил ошибку cannot convert type System.DateTime to bool и когда я попробовал .GroupBy(t => t.timestamp) Я вам в <IGrouping&ЛТ;дату и время ответа&ГТ; не содержит определение для моего поля идентификатор события, идентификатор пользователя и timestamp.



Открыт для предложений. Спасибо

Что я уже пробовал:

public ActionResult Dashboard()
        {
            using (ISession session = OpenNHibernateSession.OpenSession())
            {

               /*These answers gets my list of data. Here is where I am trying 
                 to use a GroupBy clause so records with identical timestamps
                 will only be shown once.*/
                var answers = session.Query<Answer>().OrderByDescending(t => t.timestamp).ToList();
               
                var dashboardVms = new List<DashboardViewModel>();
                foreach (var answer in answers)
                {
                    var dashboardVm = new DashboardViewModel
                    {
                        EventName = session.Get<Event>(answer.eventId, LockMode.Read).name,
                        EventId = answer.eventId,
                        UserId = answer.userId,
                        TimeStamp = answer.timestamp
                    
                    };
                    dashboardVms.Add(dashboardVm);
                }
                
                return View(dashboardVms);
            }
             
        }

1 Ответов

Рейтинг:
0

Thomas.D Williams

Я думаю, что вы можете сделать что-то вроде этого:

session
    .Query<Answer>()
    .OrderByDescending(t => t.timestamp)
    .GroupBy(x => x.timestamp)
    .Select(x => new
    {
        EventName = session.Get<Event>(x.eventId, LockMode.Read).name,
        EventId = x.eventId,
        UserId = x.userId,
        TimeStamp = x.Key
    }).ToList();

Возможно, вы захотите связать вызов AsEnumerable между GroupBy и select, если вызов Select не совместим с вашим провайдером.