Ho il seguente modello:gruppo voci di elenco con LINQ
public class Entry
{
public int UseraccountId { get; set; }
public int CompanyId { get; set; }
public DateTime CreationDate { get; set; }
public string Target { get; set; }
public string Message { get; set; }
}
e una lista con un sacco di voci:
List<Entry> entries = ... //get all entries.
Esempio:
I' d ora mi piace raggruppare le righe 2 e 3 perché hanno lo stesso UserId, lo stesso CompanyId, lo stesso target e quasi (e questa è la parte difficile), diciamo in un intervallo di 5 secondi, la stessa data.
Dopo il raggruppamento mia lista dovrebbe essere simile a questo:
C'è un facile approccio per questo problema? Qualche consiglio? Scommetto che Linq mi aiuterà in giro ma non sono sicuro di come.
Modifica: Grazie a tutti per il vostro feedback. Ho deciso di cambiare il design e di garantire che il datetime sia ora lo stesso. Quindi il raggruppamento con linq ora è molto semplice.
Quando si dice "quasi", come si desidera raggruppare, nello stesso minuto, gli stessi 10 secondi? –
Diciamo in un intervallo di 5 secondi. – mosquito87
Il raggruppamento con gli stessi valori è facile; dai un'occhiata a [molte domande] (http://stackoverflow.com/search?q=%5Bc%23%5D+linq+group+by+multiple+keys) su SO relativo a questo. Raggruppare di quasi gli stessi valori è un po 'più difficile, perché se X è quasi lo stesso di Y, e Y è quasi lo stesso di Z, allora non significa che X sia quasi lo stesso di Z. tipo di [algoritmo di clustering] (http://en.wikipedia.org/wiki/Cluster_analysis). – dtb