以下是您正在寻找的工作示例;显示特定会话的发件人的最新消息(按最高 ID)
void Main()
{
var messages = GetMessages();
var latest = messages
.GroupBy(m => m.SessionName)
.Select(grp => grp.OrderByDescending(g => g.Id).First())
.ToList();
latest.ForEach(l => Console.WriteLine($"{l.SenderName}\r\n{l.MessageText} ({l.SendDate:yyyy/MM/dd HH:mm:ss})"));
}
// Define other methods and classes here
public class Message
{
public int Id { get; set; }
public string SessionName { get; set; }
public string SenderName { get; set; }
public string ReceiverName { get; set; }
public string MessageText { get; set; }
public DateTime SendDate { get; set; }
}
public IEnumerable<Message> GetMessages()
{
return new[]
{
new Message
{
Id = 1,
SessionName = "Savage",
SenderName = "James T. Kirk",
ReceiverName = "Kahn",
MessageText = "Why would a Starfleet admiral ask a three-hundred-year-old frozen man for help?",
SendDate = new DateTime(2320, 5, 19, 15, 0, 0)
},
new Message
{
Id = 2,
SessionName = "Savage",
SenderName = "Kahn",
ReceiverName = "James T. Kirk",
MessageText = "Because I am better.",
SendDate = new DateTime(2320, 5, 19, 15, 0, 10)
},
new Message
{
Id = 3,
SessionName = "Savage",
SenderName = "James T. Kirk",
ReceiverName = "Kahn",
MessageText = "At what?",
SendDate = new DateTime(2320, 5, 19, 15, 0, 20)
},
new Message
{
Id = 4,
SessionName = "Savage",
SenderName = "Kahn",
ReceiverName = "James T. Kirk",
MessageText = "Everything. Alexander Marcus needed to respond to an uncivilized threat in a civilized time, and for that, he needed a warrior's mind - my mind - to design weapons and warships.",
SendDate = new DateTime(2320, 5, 19, 15, 0, 30)
}
};
}