c# – 将Queryable返回给IMongoQuery

请考虑以下代码
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();

但是在某些时候,您可能需要将这些未记录的方法转换为正式支持方法(未来文档方法可能会更改或将来会重命名).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...