gpt4 book ai didi

c# - 使用 MongoDB 的 Linq 查询不能像 Func 那样工作

转载 作者:可可西里 更新时间:2023-11-01 10:44:06 24 4
gpt4 key购买 nike

我在 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 

这给了我一个“Unsupported where clause:”

有什么想法吗?

最佳答案

来自网络

Not all LINQ queries can be turned into equivalent MongoDB queries, because C# allows you to write expressions that don't have any equivalent in the MongoDB query language.

话虽如此,LINQ to MongoDB 可能无法翻译委托(delegate)。

您可以在 this 上找到所有支持的 LINQ 查询地址。

结论:如果您需要查询非常大的数据或尽可能快地进行查询,您将不得不坚持使用前一种解决方案。否则,从您的数据库中提取所有数据并在内存中查询它们。

关于c# - 使用 MongoDB 的 Linq 查询不能像 Func 那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com