sto cercando di ottenere l'ultimo contatto con un determinato utente, raggruppati per utente:Come faccio a raggruppare su uno dei due possibili campi usando LINQ?
public class ChatMessage
{
public string SentTo { get; set; }
public string SentFrom { get; set; }
public string MessageBody { get; set; }
public string SendDate { get; set; }
}
informazioni di contatto dell'utente potrebbe essere sia in SentTo
o SentFrom
.
List<ChatMessage> ecml = new List<ChatMessage>();
var q = ecml.OrderByDescending(m => m.SendDate).First();
mi darebbe l'ultimo messaggio, ma ho bisogno dell'ultimo messaggio per utente. La soluzione più vicina che ho trovato era LINQ Max Date with group by, ma non riesco a capire la sintassi corretta. Preferirei non creare più oggetti List se non dovessi farlo. Se le informazioni dell'utente sono in SentTo
, le mie informazioni saranno in SentFrom
e viceversa, quindi ho un modo per controllare dove sono i dati dell'utente.
Ho detto che ero molto nuovo a LINQ? Qualsiasi aiuto sarebbe molto apprezzato.
'GroupBy' utente, quindi' .Seleziona (g => g.OrderByDescending (m => m.SendDate) .First(); ' –
È sempre possibile effettuare 2 query separate, prima con l'utente in SentTo, secondo con utente in SentFrom e poi prendere il massimo da uno di questi due. –
Grazie per la risposta, ma come si raggruppa per SentTo OR SentFrom nella stessa istruzione? È possibile, oppure è necessario copiare l'elenco e modificarlo in combinare i campi, quindi raggruppare il nuovo elenco? – Darkloki