c# – 将Queryable返回给IMongoQuery
发布时间:2020-12-15 07:38:53 所属栏目:百科 来源:网络整理
导读:请考虑以下代码 var q = from e in myCollection.AsQueryableEntity() where e.Name == "test" select e; 实际查询非常复杂,我不喜欢使用QueryBuilder而不是LINQ来构建它. 所以我想把它转换回IMongoQuery在myCollection.Group()调用中使用,因为没有通过LINQ
请考虑以下代码
var q = from e in myCollection.AsQueryable<Entity>() where e.Name == "test" select e; 实际查询非常复杂,我不喜欢使用QueryBuilder而不是LINQ来构建它. 所以我想把它转换回IMongoQuery在myCollection.Group()调用中使用,因为没有通过LINQ的GroupBy支持. 可能吗? 解决方法
编辑答案:
我意识到已经有一种从LINQ查询获取Mongo查询的正式方法(我应该知道!).你必须将IQueryable< T>到MongoQueryable< T>获取访问GetMongoQuery方法: var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e; var mongoQuery = ((MongoQueryable<Entity>)linqQuery).GetMongoQuery(); 原来的答案: 目前还没有正式支持的方式来做,但是在不久的将来,我们打算让您轻松找出LINQ查询所映射的MongoDB查询. 在短期内,您可以使用以下未记录的内部方法来查找LINQ查询映射到的MongoDB查询: var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e; var translatedQuery = (SelectQuery)MongoQueryTranslator.Translate(linqQuery); var mongoQuery = translatedQuery.BuildQuery(); 但是在某些时候,您可能需要将这些未记录的方法转换为正式支持的方法(未来文档方法可能会更改或将来会重命名). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |