public WantMessage GetWant() { WantMessage want = new WantMessage(); List <MessageId> receivedIDs = ( from rm in ReceivedMessages select rm.Rumor.FullId).ToList(); List <string> distinctOrigins = ( from rid in receivedIDs select rid.origin).Distinct().ToList(); foreach (string orig in distinctOrigins) { List <MessageId> groupedMessages = ( from rm in ReceivedMessages where rm.Rumor.FullId.origin == orig orderby rm.Rumor.FullId.sequence descending select rm.Rumor.FullId).ToList(); want.AddWant(groupedMessages[0]); } return(want); }