Синтаксис для разыменования указателя в C (или C++)

Вам нужно будет сгруппировать записи по дате и взять нужную запись в каждой группе

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)

11
задан 3 revs, 3 users 92% 28 April 2009 в 22:15
поделиться

11 ответов

Технический термин для синтаксиса # 1 - «чокнутый».

Тем не менее, я бы немного беспокоился о коде, который тоже должен идти косвенно 3 раза.

22
ответ дан 3 December 2019 в 00:43
поделиться

Я думаю, что ваш коллега либо неопытный, какой-то неофоб, либо просто невежественный. Вы обнаружите, что единодушным выбором является использование синтаксиса ->.

16
ответ дан 3 December 2019 в 00:43
поделиться

В C ++ я бы определенно использовал ->, потому что -> может быть перегружен.

В CI также будет использоваться ->, потому что его легче читать, быстрее печатать и меньше ошибок склонны (надеюсь, что ваш коллега не заблудится в скобках!).

11
ответ дан 3 December 2019 в 00:43
поделиться

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.

8
ответ дан 3 December 2019 в 00:43
поделиться

Я открою дверь №2, Монти! Конечно, его сложнее набрать, но это более понятно, чем выяснение того, какие операторы разыменовывают, какой указатель.

6
ответ дан 3 December 2019 в 00:43
поделиться

Вы также можете обсудить понятие «владение кодом» в своей команде. Ваш коллега не «владеет» кодом, а компания. Следовательно, любой сотрудник компании, по уважительной причине, может его редактировать.

5
ответ дан 3 December 2019 в 00:43
поделиться

субъективно, да?

Я тоже возьму №2!

1
ответ дан 3 December 2019 в 00:43
поделиться

Второй вариант, очевидно, выглядит яснее. Единственная причина, по которой стоит предпочесть # 1, - это случай какой-то странной перегрузки операторов * и operator ->, когда # 1 действительно отличается от # 2.

1
ответ дан 3 December 2019 в 00:43
поделиться

№ 2.

Сказав это, не обижайте людей, изменяя их код, особенно если это вопрос стиля. Это просто не стоит того.

-1
ответ дан 3 December 2019 в 00:43
поделиться

Bad colleague. Change colleague.

1
ответ дан 3 December 2019 в 00:43
поделиться

У меня был опыт, когда "->" не было должным образом реализовано в нескольких компиляторах ... поэтому нормальный (* p) .a с большей вероятностью работал, когда у вас было несколько уровней вложенности.

0
ответ дан 3 December 2019 в 00:43
поделиться