Вам нужно будет сгруппировать записи по дате и взять нужную запись в каждой группе
List<HrpHistoryRepo> hhrListFiltered = hhrList
.Where(x => x.HrpDateTime >= datestart && x.HrpDateTime <= dateend && x.HrpMccId == tmp.MccId)
.GroupBy(_ => _.HrpDateTime.Date) //<-- grouping by record date
.Select(g => g.OrderByDescending(_ => _.HrpDateTime).First()) //<-- get record in group
.ToList();
. Поэтому приведенный выше код сначала фильтрует записи на основе диапазона дат и идентификатора. Затем он группирует результаты по дате (то есть по дню) и берет записи в каждой группе с самым поздним временем (ближе к полуночи 00:00)
Технический термин для синтаксиса # 1 - «чокнутый».
Тем не менее, я бы немного беспокоился о коде, который тоже должен идти косвенно 3 раза.
Я думаю, что ваш коллега либо неопытный, какой-то неофоб, либо просто невежественный. Вы обнаружите, что единодушным выбором является использование синтаксиса ->.
В C ++ я бы определенно использовал ->, потому что -> может быть перегружен.
В CI также будет использоваться ->, потому что его легче читать, быстрее печатать и меньше ошибок склонны (надеюсь, что ваш коллега не заблудится в скобках!).
I'm typing off the cuff here, but my recollection is that the logic for the very existence of the ->
operator in C was explained in the 1st edition of K&R as (paraphrasing): because otherwise you'd have to type (*p).a
due to the necessary precedence of the *
and .
operators.
To not use ->
for its intended purpose is nuts.
Я открою дверь №2, Монти! Конечно, его сложнее набрать, но это более понятно, чем выяснение того, какие операторы разыменовывают, какой указатель.
Вы также можете обсудить понятие «владение кодом» в своей команде. Ваш коллега не «владеет» кодом, а компания. Следовательно, любой сотрудник компании, по уважительной причине, может его редактировать.
Второй вариант, очевидно, выглядит яснее. Единственная причина, по которой стоит предпочесть # 1, - это случай какой-то странной перегрузки операторов * и operator ->, когда # 1 действительно отличается от # 2.
№ 2.
Сказав это, не обижайте людей, изменяя их код, особенно если это вопрос стиля. Это просто не стоит того.
У меня был опыт, когда "->" не было должным образом реализовано в нескольких компиляторах ... поэтому нормальный (* p) .a с большей вероятностью работал, когда у вас было несколько уровней вложенности.