我有下表
Date/Time Value
10/1/2018 2017-05-21 19:30:44.000 11
10/1/2018 2017-05-21 19:30:44.000 12
10/2/2018 2017-05-21 19:31:44.000 9
10/3/2018 2017-05-21 19:32:44.000 8
10/4/2018 2017-05-21 19:33:44.000 12
我的查询当前消除了日期/时间和值中的重复项
var res = result.Select(x => new { x.p4.SampleDt, x.p1.Value }).OrderBy(a => a.SampleDt).Distinct().ToList();
,但需要对此进行扩展,以使重复的日期/时间戳具有唯一的日期/时间戳。
使用linq,我想查找所有重复的日期/时间戳记(注意2017-05-21 19:30:44.000如何重复),然后将重复项中的每个条目增加1毫秒以使其唯一。最终结果将只是唯一的日期/时间戳记
最终结果将是:
Date/Time Value
10/1/2018 2017-05-21 19:30:44.000 11
10/1/2018 2017-05-21 19:30:44.100 12
10/2/2018 2017-05-21 19:31:44.000 9
10/3/2018 2017-05-21 19:32:44.000 8
10/4/2018 2017-05-21 19:33:44.000 12
主要是我不能有重复的日期/时间戳。我需要通过附加使其独特的方式使其具有独特性。
答案 0 :(得分:3)
假设另一个记录不可能具有比另一个记录落后一毫秒的DateTime值,则可以使用以下方法:
var duplicates = table.GroupBy(x => x.SampleDt).Where(g => g.Count() > 1);
foreach (var dupGroup in duplicates)
{
int index = 0;
foreach (var entity in dupGroup.Skip(1))
{
entity.SampleDt = entity.SampleDt.AddMilliseconds(++index);
}
}
但是请记住,这种方法是有问题的,您要增加一毫秒而不知道结果DateTime
是否还没有被其他记录使用。