Как вернуть запрос из космоса дб по порядку строк? - PullRequest
1 голос
/ 05 мая 2019

У меня есть коллекция Cosmos db. Мне нужно запросить все документы и вернуть их в порядке даты создания. Дата создания - это определенное поле, но по исторической причине оно представлено в строковом формате как MM / dd / yyyy. Например: 09.02.2009. Если я просто упорядочу по этой строке, результатом будет хаос.

Я использую linq lambda, чтобы написать свой запрос в webapi. Я попытался разобрать строку и попытаться преобразовать строку. Оба вернули "метод не поддерживается".

Вот мой запрос:

var query = Client.CreateDocumentQuery<MyModel>(CollectionLink)
                            .Where(f => f.ModelType == typeof(MyModel).Name.ToLower() && f.Language == getMyModelsRequestModel.Language )
                            .OrderByDescending(f => f.CreationDate)
                            .AsDocumentQuery();

Благодарю за любой совет. Благодарю. Это будет огромное усилие, чтобы вернуться и изменить формат поля (что влияет на многие другие вещи). Я хотел бы избежать этого, если это возможно.

1 Ответ

0 голосов
/ 07 мая 2019

Чен Ван. Так как порядок по не поддерживает производные значения или подзапрос ( ссылка ), поэтому вам нужно отсортировать полученные значения самостоятельно, я думаю.

Вы можете сконструироватьMM/dd/yyyy до yyyymmdd по UDF в космосе, дБ.

udf:

function getValue(datetime){
    return datetime.substring(6,10)+datetime.substring(0,2)+datetime.substring(3,5);
}

sql: ВЫБЕРИТЕ udf.getValue (c.time) как времяиз c

enter image description here

Затем вы можете отсортировать массив по значению свойства класса в коде c #. Пожалуйста, следуйте этому примеру: Как отсортироватьмассив, содержащий объекты класса по значению свойства экземпляра класса?

...