Я пытаюсь реализовать функцию обмена сообщениями в ASP.NET MVC.Я хочу отобразить список всех тем для определенного ContactID, отображая последнее сообщение в этой теме (независимо от того, от кого оно).Я настроил свою таблицу, как показано ниже:
MessageID ThreadID MessageBody ContactID
10000004 300152,300160, msg1 300160
10000005 300152,300160, msg2 300160
10000008 300152,300160, msg3 300152
Мне удалось отобразить последнее сообщение, сгруппированное по ThreadID.Пример:
ThreadID Count LatestMessage
300152,300160, 3 10000008
Однако, если я добавлю предложение Where перед группой by (см. Ниже), она сначала отфильтрует по ContactID перед выполнением группы by и выдаст такой результат:
ThreadID Count LatestMessage
300152,300160, 2 10000005
Вот код:
var result = from s in pdc.Messages
where s.ContactID == contactID
group new { s } by new { s.ThreadID } into d
let maxMsgID = d.Max(x => x.s.MessageID)
select new {
ThreadID = d.Key.ThreadID,
Count = d.Count(item => item.s.MessageType == GlobalConstants.MessageTypeText),
LastMessage = d.Where(x => x.s.MessageID == maxMsgID)
};
Есть ли способ создать группу, а затем выполнить фильтрацию по ContactID?