У меня есть сущность со следующими полями: GUID TaskId, GUID SubTaskId, DateTime Timestamp
TaskId может быть один ко многим с SubTaskId. Это как составной ключ почти.
Я хотел бы написать выражение или выражения, приводящие к новейшим среди каждого TaskId, т.е.
TaskId SubTaskId Timestamp
1 A 2010-11-22 15:48:49.727
1 B 2010-11-22 16:24:51.117
2 C 2010-11-15 11:49:05.717
2 D 2010-11-15 14:02:11.467
В результате получится последовательность, содержащая только:
TaskId SubTaskId Timestamp
1 B 2010-11-22 16:24:51.117
2 D 2010-11-15 14 :02:11.467
Это выражение отлично работает для отображения всех TaskId и TimeStamps.
var q1 =
from req in myEntity
orderby req.TaskId
select new
{
req.TaskId,
req.SubTaskId,
req.Timestamp
};
но я хотел бы показать только последнюю временную метку для каждого TaskId. Все мои попытки добавить максимум к выражению терпят неудачу. Публикация (http://stackoverflow.com/questions/2034800/how-do-you-find-the-group-wise-max-in-linq) казалась близкой, но я не мог перевести ее во что-то работающее. Возможно, нужен foreach
.