我在MongoDB集合上构建了一个Linq查询,该集合可以正确检索我的文档:
var parts = mongoParts.AsQueryable()
.Where(mongo => mongo.Prop1 == bmbMatch.Prop1 && mongo.Prop2 == bmbMatch.Prop2)
.ToList();
这样可以正常工作,但是为了减少代码,我编写了一个带有
的通用函数Func<T, T, bool> selector
采用与上面Where子句完全相同的lamdba表达式,这使得它成为:
var mongo = mongoQuery.AsQueryable()
.Where(tmongo => selector(tmongo, localMatch))
.ToList();
选择器为:
(mongo, local) => mongo.Prop1== local.Prop1 && mongo.Prop2 == local.Prop2
这给了我一个“不支持的where子句:”
有什么想法吗?
答案 0 :(得分:1)
来自互联网
并非所有LINQ查询都可以转换为等效的MongoDB查询, 因为C#允许你编写没有任何表达式的表达式 相当于MongoDB查询语言。
话虽如此,LINQ to MongoDB可能无法翻译代表。
您可以在this地址上找到所有受支持的LINQ查询。
结论:如果您需要查询非常大的数据或尽可能快地进行查询,您将不得不坚持使用以前的解决方案。否则,从数据库中提取所有数据并在内存中查询它们。