到目前为止,我一直在使用以下代码查找我的文档,然后对它们进行排序:
var options = new FindOptions
{
Modifiers = new BsonDocument("$hint", "PathTypeFilenameIndex")
};
return await Collection
.Find(f => f.Metadata["path"] == path, options)
.SortBy(f => f.Metadata["type"])
.ThenBy(f => f.Filename)
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
我有一个类,其中的Metadata字段具有path和type字段,该类也具有Filename字段。我希望在元数据中具有给定路径的所有文档按类型然后按文件名排序。
一个示例结果将是按“名称”字段排序的文档列表,如下所示:
a, Ab, B, c, D
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到这样的东西:
Ab, B, D, a, c
Run Code Online (Sandbox Code Playgroud)
这是因为MongoDB使用简单的二进制比较对数据进行排序,其中'A'<'a'是由于其ASCII码。
所以我的问题是:有没有办法使大小写不区分大小写并继续使用“ $ hint”?
我传递给Find方法的选项应该告诉MongoDB使用哪个索引。我发现了这篇文章:MongoDB和C#:不区分大小写的搜索,但是这里的方法不适用于排序,我无法告诉MongoDB使用哪个索引。
假设我运行的是 Linux,但没有安装桌面环境。我启动我的系统,我所拥有的只是我的 shell。
是否可以编译一个使用OpenGL库或直接使用GPU驱动程序绘制到屏幕上的程序?
据我所知,我总是需要某种桌面环境来为我提供一个可以绘图的窗口。为了简单起见,假设我只想绘制一个简单的二维形状,例如屏幕中间的三角形。
如果可能的话我该怎么做以及在哪里可以阅读有关该主题的更多信息?如果我能够直接在终端上绘图,这是否意味着我能够在具有桌面环境的系统上运行我的应用程序,并且仍然能够看到我的三角形?
我有一个简单的控制器,它从 POST 请求正文中获取一个参数。通常它应该自动将它从 JSON 反序列化为对象类型,但它失败了。当我尝试自己反序列化它时,它可以正常工作。这是一些代码:
控制器(documentCommand 变量为空):
public async Task<IActionResult> Create([FromBody]CreateDocumentCommand documentCommand)
{
if (documentCommand == null)
{
return StatusCode(403); //Deserialization fails, documentCommand is null
}
//we have to reach this :(
return Json(documentCommand.Document.Id);
}
Run Code Online (Sandbox Code Playgroud)
这是我如何序列化它以及我如何测试它是否能够反序列化它:
JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
string serialized = JsonConvert.SerializeObject(item, jsonSerializerSettings);
CreateDocumentCommand deserialized = JsonConvert.DeserializeObject<CreateDocumentCommand>(serialized, jsonSerializerSettings);
Run Code Online (Sandbox Code Playgroud)
在我的 CreateDocumentCommand 类中,我有一个接口属性,当我删除TypeNameHandling = TypeNameHandling.Auto 时,它在第二个示例中也失败了。
有没有办法告诉 MVC 反序列化器将TypeNameHandling考虑在内?在我看来,它跳过了它。
编辑 一些更多的代码:
public class CreateDocumentCommand …Run Code Online (Sandbox Code Playgroud)