У меня есть таблица в базе данных SQL:
ID Data Value
1 1 0.1
1 2 0.4
2 10 0.3
2 11 0.2
3 10 0.5
3 11 0.6
Для каждого уникального значения в Data я хочу отфильтровать строку с наибольшим идентификатором. Например: в приведенной выше таблице я хочу отфильтровать третью и четвертую строку, поскольку пятая и шестая строки имеют одинаковые значения данных, но их идентификаторы (3) больше (2 в третьей и четвертой строке).
Я попробовал это в Linq to Entities:
IQueryable<DerivedRate> test = ObjectContext.DerivedRates.OrderBy(d => d.Data).ThenBy(d => d.ID).SkipWhile((d, index) => (index == size - 1) || (d.ID != ObjectContext.DerivedRates.ElementAt(index + 1).ID));
По сути, я сортирую список и удаляю дубликаты, проверяя, имеет ли следующий элемент идентичный идентификатор.
Однако это не работает, потому что SkipWhile (index) и ElementAt (index) не поддерживаются в Linq to Entities. Я не хочу вытягивать всю гигантскую таблицу в массив перед сортировкой. Есть ли способ?