如何 return 来自 cosmos db 的查询按日期字符串排序?

How to return a query from cosmos db order by date string?

我有一个 cosmos 数据库集合。我需要按创建日期的顺序查询所有文档和 return 它们。创建日期是一个定义的字段,但由于历史原因,它的字符串格式为 MM/dd/yyyy。例如:2019 年 2 月 9 日。如果我只是按这个字符串排序,结果是混乱的。

我正在使用 linq lambda 在 webapi 中编写我的查询。我试图解析字符串并尝试转换字符串。 return 都 "method not supported"。

这是我的查询:

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

感谢任何建议。谢谢。返回并修改字段的格式(这会影响许多其他事情)将是巨大的努力。我希望尽可能避免它。

陈Wang.Sinceorder by不支持派生值和子查询(link),所以我认为你需要自己对派生值进行排序。

您可以在 cosmos db 中通过 UDF 构建 MM/dd/yyyyyyyymmdd

udf:

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

sql: SELECT udf.getValue(c.time) 作为从 c

开始的时间

然后你可以在 c# code.Please 中按 属性 值 class 对数组进行排序,遵循这种情况:How to sort an array containing class objects by a property value of a class instance?