Предположим, у меня есть 4 фотографии, и я хочу вернуть список, отсортированный сначала по Rating desc, а затем по RatingsCount desc. Ниже шифрованный запрос дает мне правильный результат:
MATCH (n:`Photo`) WHERE n.RatingsCount > 0 RETURN n.Rating, n.RatingsCount ORDER BY n.Rating DESC, n.RatingsCount DESC LIMIT 20
Идентификатор 1-рейтинг 9-счетчик рейтингов 1
Идентификатор 3-Рейтинг 7-Счетчик рейтингов 2
Идентификатор 2-Рейтинг 7-Счетчик рейтингов 1
Идентификатор 4-Рейтинг 2-Счетчик рейтингов 1
К сожалению, я не могу перевести его в Neo4jClient. Ниже запрос дает мне фотолист, упорядоченный по возрастанию рейтинга и убыванию рейтинга:
var query = await graphClient.Cypher
.Match("(photo:Photo)")
.Where((PhotoEntity photo) => photo.RatingsCount > 0);
.ReturnDistinct((photo) => new
{
Photo = photo.As<PhotoEntity>()
})
.OrderByDescending("photo.Rating", "photo.RatingsCount")
.Limit(20)
.ResultsAsync;
Идентификатор 4-Рейтинг 2-Счетчик рейтингов 1
Идентификатор 3-Рейтинг 7-Счетчик рейтингов 2
Идентификатор 2-Рейтинг 7-Счетчик рейтингов 1
Идентификатор 1-рейтинг 9-счетчик рейтингов 1
Если я изменю порядок Rating и RatingsCount, я получу фотографии в еще более странном порядке :) Любая подсказка, что я здесь делаю неправильно?
var query = await graphClient.Cypher
.Match("(photo:Photo)")
.Where((PhotoEntity photo) => photo.RatingsCount > 0);
.ReturnDistinct((photo) => new
{
Photo = photo.As<PhotoEntity>()
})
.OrderByDescending("photo.RatingsCount", "photo.Rating")
.Limit(20)
.ResultsAsync;
Идентификатор 1-рейтинг 9-счетчик рейтингов 1
Идентификатор 2-Рейтинг 7-Счетчик рейтингов 1
Идентификатор 4-Рейтинг 2-Счетчик рейтингов 1
Идентификатор 3-Рейтинг 7-Счетчик рейтингов 2