C# 我在比较两个字符串时得到ArgumentException

C# 我在比较两个字符串时得到ArgumentException,c#,.net,mongodb,backend,C#,.net,Mongodb,Backend,这是我的密码 公共异步任务GetSearchDuplicateTileAsync(字符串标题) { 尝试 { 布尔结果=真; var filter=Builders.filter.Where(x=>x.ApiName.ToLower()。 Replace(“,string.Empty).包含(title.ToLower()。 替换(“,string.Empty)); var newfilter=await_repository._apibrary.Find(filter.ToListAsync

这是我的密码

公共异步任务GetSearchDuplicateTileAsync(字符串标题)
{
尝试
{ 
布尔结果=真;
var filter=Builders.filter.Where(x=>x.ApiName.ToLower()。
Replace(“,string.Empty).包含(title.ToLower()。
替换(“,string.Empty));
var newfilter=await_repository._apibrary.Find(filter.ToListAsync();
如果(newfilter.Count()>0)
{
结果=假;
}
返回结果;
}
捕获(例外情况除外)
{
掷骰子;
}
}
这就是我得到的错误:

"ArgumentException: Unsupported filter: {document}{ApiName}.ToLower()
.Replace(" ", "").Contains("applicationtest")."

如何修复它?

让我们看看您的库的原始源代码

原因是

filter == null
筛选器为空,但为空

{document}{ApiName}.ToLower().Replace(“,”).Contains(“applicationtest”)

您大概是在这里查询数据库/数据存储?如果是这样,查询引擎可能无法解释包含C#方法调用的过滤器。在筛选器外部执行规范化(即小写和替换),然后查看它是否仅适用于
Contains()
。mongodb c#驱动程序不支持将
replace(“,string.Empty)
转换为mongo查询语言。最好的办法是存储另一个名为
ApiNameNormalized
的字段,该字段的值为小写+空格。