Ho un elenco di oggetti con più proprietà al suo interno. Ecco l'oggetto.Rimuovi tutto tranne 1 oggetto nell'elenco basato sul raggruppamento
public class DataPoint
{
private readonly string uniqueId;
public DataPoint(string uid)
{
this.uniqueId = uid;
}
public string UniqueId
{
get
{
return this.uniqueId;
}
}
public string ScannerID { get; set; }
public DateTime ScanDate { get; set; }
}
Ora nel mio codice, ho una lista gigante di questi, centinaia forse qualche migliaio.
Ogni oggetto punto dati appartiene a un tipo di scanner e ha una data di scansione. Voglio rimuovere tutti i punti di dati che sono stati scansionati lo stesso giorno tranne l'ultimo per un dato computer.
Ho provato a utilizzare LINQ come segue ma questo non ha funzionato. Ho ancora molti punti dati duplicati.
this.allData = this.allData.GroupBy(g => g.ScannerID)
.Select(s => s.OrderByDescending(o => o.ScanDate))
.First()
.ToList();`
ho bisogno di raggruppare i punti dati per ID scanner, perché ci potrebbero essere punti di dati digitalizzati lo stesso giorno, ma su una macchina diversa. Ho solo bisogno dell'ultimo punto dati per un giorno se ce ne sono molti.
Modifica per chiarimento - Per punto di dati ultimo si intende l'ultimo punto di dati scansionato per una determinata data di scansione per una determinata macchina. Spero che aiuti. Quindi, quando si raggruppa per ID scanner, ho quindi cercato di ordinare per data di scansione e quindi mantenere solo l'ultima data di scansione per giorni con più scansioni.
Ecco alcuni dati di test per 2 macchine:
Unique ID Scanner ID Scan Date
A1JN221169H07 49374 2003-02-21 15:12:53.000
A1JN22116BK08 49374 2003-02-21 15:14:08.000
A1JN22116DN09 49374 2003-02-21 15:15:23.000
A1JN22116FP0A 49374 2003-02-21 15:16:37.000
A1JOA050U900J 80354 2004-10-05 10:53:24.000
A1JOA050UB30K 80354 2004-10-05 10:54:39.000
A1JOA050UD60L 80354 2004-10-05 10:55:54.000
A1JOA050UF80M 80354 2004-10-05 10:57:08.000
A1JOA0600O202 80354 2004-10-06 08:38:26.000
Si sa che si può fare una proprietà auto di sola lettura e sbarazzarsi del campo di supporto 'stringa pubblica UniqueId {get; set privato; } '. – juharr
Si dovrebbero anche inserire i risultati desiderati per i dati di test. – juharr