Как сгруппировать и заказать в запросе LINQ - PullRequest
2 голосов
/ 05 мая 2010

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

у меня есть объект с уникальными идентификаторами, но у некоторых будет общий versionId. Я хотел бы получить последний отредактированный элемент того же versionId. Так что только один элемент для идентификатора версии, и я хочу, чтобы он был последним отредактированным.

IQueryable<Item> result = DataContext.Items.Where(x => (x.ItemName.Contains(searchKeyword) ||
                                  x.ItemDescription.Contains(searchKeyword))
                                  .GroupBy(y => y.VersionId)
                                  .Select(z => z.OrderByDescending(item => item.LastModifiedDateTime).FirstOrDefault());

Редактировать: Меня не волнует порядок набора результатов, мне просто важно, какой элемент в группе возвращается Я хочу убедиться, что последний отредактированный элемент в группе versionId возвращается.

1 Ответ

2 голосов
/ 05 мая 2010

Ваш параметр z содержит отдельные объекты группы.

Позвонив по номеру OrderBy внутри Select, вы заказываете элементы в каждой группе, но не сами группы.

Вам также нужно позвонить OrderBy после Select, например:

.Select(z.OrderByDescending(item => item.LastModifiedDateTime).FirstOrDefault())
.Where(item => item != null)
.OrderByDescending(item => item.LastModifiedTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...