I folgende Datetimes zu gruppieren möchte zusammen in C# Linq wie folgt:C# linq Gruppe durch eine Datumzeit auf die nächste Sekunde
Gruppe 1:
2015-03-03 15:18:42.880
2015-03-03 15:18:42.897
Gruppe 2:
2015-03-19 16:29:59.977
2015-03-19 16:29:59.983
2015-03-19 16:29:59.983
Gruppe 3:
2015-03-26 11:27:29.813
2015-03-26 11:27:30.030
2015-03-26 11:27:30.030
Gruppe 4:
2015-03-27 15:13:58.483
2015-03-27 15:13:58.483
2015-03-27 15:13:58.500
Ich bin mit einigen dieser Gruppierungen ein Problem haben. Momentan gruppiere ich nur die Daten und ignoriere den Millisekunden-Anteil. Was ich möchte, gruppieren Sie Daten, die innerhalb von 1 Sekunde ohne die Millisekunden liegen. Das ist meine Abfrage so weit:
var query =
from trans in TransactionTable.AsEnumerable()
let dateWithoutMilliseconds = trans.Field<DateTime>("TranactionDate").AddMilliseconds(-trans.Field<DateTime>("TranactionDate").Millisecond)
group trans by dateWithoutMilliseconds into g
select new
{
TransDate = g.Key,
};
Es ist nicht klar, was Sie mit Meinst du Gruppe auf die nächste ganze Sekunde? Weil das immer noch Daten gruppiert, die innerhalb einer Sekunde voneinander in verschiedenen Gruppen sind, z. 2015-03-26 11: 27: 29.513 und 2015-03-26 11: 27: 29.413 - sie sind nur 100ms voneinander entfernt, aber der erste würde bis zum 2015-03-26 11:27:30 runden und der zweite würde abzurunden bis 2015-03-26 11:27:29. –
Also wenn Sie 2015-03-03 15: 18: 42.880, 2015-03-03 15: 18: 43.000 bis 2015-03-03 20: 00: 00.000 kontinuierliche Daten alle mit nur 1 Sek. Differenz haben, werden Sie dies gruppieren in 1? –
Das gewünschte Ergebnis ist nicht klar; vielleicht möchten Sie die Gruppenbasis nach einem Kriterium erstellen, das von den Daten selbst abhängt, das [Clustering] genannt wird (https://en.wikipedia.org/wiki/Cluster_analysis). – Codor