Я хотел бы, чтобы сгруппировать следующие DateTimes вместе с помощью Linq в C# следующим образом:C# LINQ группы с помощью DateTime до ближайшего второго
Группа 1:
2015-03-03 15:18:42.880
2015-03-03 15:18:42.897
Группа 2:
2015-03-19 16:29:59.977
2015-03-19 16:29:59.983
2015-03-19 16:29:59.983
Группа 3:
2015-03-26 11:27:29.813
2015-03-26 11:27:30.030
2015-03-26 11:27:30.030
Группа 4:
2015-03-27 15:13:58.483
2015-03-27 15:13:58.483
2015-03-27 15:13:58.500
У меня возникли проблемы с некоторыми из этих группировок. В настоящее время я просто группирую даты, игнорируя часть миллисекунд. То, что я хотел бы сделать, это групповые даты, которые находятся в пределах 1 секунды друг от друга без миллисекунд. Это мой запрос до сих пор:
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,
};
Это не ясно, что вы имеете в виду под «То, что я хотел бы сделать это дату группы, которые в течение 1 секунды друг от друга без миллисекунд.» Вы имеете в виду группу до ближайшей целой секунды? Поскольку это все равно будет группировать даты, которые находятся в пределах секунды друг от друга в разных группах, например. 2015-03-26 11: 27: 29.513 и 2015-03-26 11: 27: 29.413 - они всего лишь на 100 мс друг от друга, но первый раунд до 2015-03-26 11:27:30, а второй округлить до 2015-03-26 11:27:29. –
Итак, если у вас есть 2015-03-03 15: 18: 42.880, 2015-03-03 15: 18: 43.000 to 2015-03-03 20: 00: 00.000 непрерывных данных всего с разницей в 1 секунду, разделите ли вы это в 1? –
Желаемый результат не ясен; возможно, вы хотели бы создать базу групп по некоторому критерию, который зависит от самих данных, который называется [кластеризация] (https://en.wikipedia.org/wiki/Cluster_analysis). – Codor