我有一个cosmos db集合。我需要查询所有文档并按创建日期的顺序返回它们。创建日期是一个已定义的字段,但由于历史原因,它的字符串格式为MM / dd / yyyy。例如:02/09/2019。如果仅按此字符串排序,结果将是混乱的。
我正在使用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();
感谢任何建议。谢谢。返回并修改字段格式(这会影响许多其他事情)将是巨大的努力。我希望避免这种情况。
答案 0 :(得分:0)
Chen Wang。由于排序依据不支持派生值或子查询(link),因此我认为您需要自己对派生值进行排序。
您可以在宇宙数据库中由UDF构造if ( (found.type == (AVMetadataObject.ObjectType.qr) && found.stringValue != nil) ||
(found.type == (AVMetadataObject.ObjectType.ean13) && found.stringValue != nil) || ..... )
至MM/dd/yyyy
。
udf:
yyyymmdd
sql: 从c中选择udf.getValue(c.time)作为时间
然后您可以按照c#代码中class的属性值对数组进行排序。请遵循这种情况:How to sort an array containing class objects by a property value of a class instance?