我在mongodb中存储了一个包含Guid的对象。 Mongodb将Guid转换为二进制值
{
"_id" : ObjectId("52cf4a467b302a4797db23e8"),
"name" : "test",
"guid" : new BinData(3, "qZ8PQdmDv0+K500wnj6skA=="),
}
当我在Linq表达式中使用Guid并且计数始终为0时,我得到一个空结果集。
var queryable = _database.GetCollection<MyObject>("myname").AsQueryable();
var guid = new Guid("410f9fa9-83d9-4fbf-8ae7-4d309e3eac90");
var count = queryable.Where(x => x.Guid == guid).Count();
原因是Linq生成以下请求
count: "member_variables", query: { panelid: "410f9fa9-83d9-4fbf-8ae7-4d309e3eac90" }
但请求应为
count: "member_variables", query: { panelid: new BinData(3, "qZ8PQdmDv0+K500wnj6skA==") }
我尝试了各种Linq表达式,但都没有用。
queryable.Where(x => x.Guid.ToString() == guid.ToString())
抛出异常:“无法确定表达式的序列化信息:x.Guid.ToString()。”
queryable.Where(x => x.Guid == new BsonBinaryData(guid));
抛出异常:“不支持的where子句:((BsonBinaryData)x.Guid == UuidLegacy:0x24f7ceb84f06d143b6426e8f01cb7825)。”
我如何申请文件?
注意:我需要使用IQuerable,不能使用Mongodb查询。