У меня есть таблица измерений следующим образом:
SourceId: int
Метка времени: дата / время
Измерение: int
Пример данных выглядит следующим образом (подробнее о звездочках ниже):
SID | TimeStamp | Измерение
10 | 02-01-2011 12:00:00 | 30 *
10 | 02-01-2011 12:10:00 | 30
10 | 02-01-2011 12:17:00 | 32 *
10 | 02-01-2011 12:29:00 | 30 *
10 | 02-01-2011 12:34:00 | 30
10 | 02-01-2011 12:39:00 | 35 *
10 | 02-01-2011 12:46:00 | 36 *
10 | 02-01-2011 12:39:00 | 36
10 | 02-01-2011 12:54:00 | 36
11 | 02-01-2011 12:00:00 | 36 *
11 | 02-01-2011 12:10:00 | 36
11 | 02-01-2011 12:17:00 | 37 *
11 | 02-01-2011 12:29:00 | 38 *
11 | 02-01-2011 12:34:00 | 38
11 | 02-01-2011 12:39:00 | 37 *
11 | 02-01-2011 12:46:00 | 36 *
11 | 02-01-2011 12:39:00 | 36
11 | 02-01-2011 12:54:00 | 36
Мне нужен запрос LINQ, который будет возвращать только те строки, когда значение Measurement отличается от предыдущей строки с тем же SourceId (т. Е. Каждая строка отмечена звездочкой). Таблица должна быть отсортирована по SourceId, а затем по TimeStamp.
Данные из запроса будут использоваться для построения графика, где каждый SourceId является серией. Исходная таблица содержит несколько миллионов строк, а повторяющиеся измерения исчисляются тысячами. Поскольку эти повторяющиеся значения измерений не имеют никакого значения для результирующего графика, я бы хотел их исключить перед передачей данных в мой граф для управления рендерингом.
Я пытался использовать Distinct () различными способами и рассмотрел совокупные запросы здесь http://msdn.microsoft.com/en-us/vcsharp/aa336746, но не вижу очевидного решения.