Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将不推荐的IMongoQuery转换为FilterDefinitionBuilder_C#_Mongodb_Dynamicquery - Fatal编程技术网

C# 如何将不推荐的IMongoQuery转换为FilterDefinitionBuilder

C# 如何将不推荐的IMongoQuery转换为FilterDefinitionBuilder,c#,mongodb,dynamicquery,C#,Mongodb,Dynamicquery,我有一个使用MongoDB驱动程序v2.0的Visual Studio C#项目,我正在尝试将其更新为使用驱动程序v2.3.0 有一段代码根据不同搜索字段的存在构建IMongoQuery条目列表,例如 var queryList = new List<IMongoQuery>(); if (!string.IsNullOrEmpty(searchField1)) queryList.Add(Query.Matches(sKey1, searchField1)); ... if (

我有一个使用MongoDB驱动程序v2.0的Visual Studio C#项目,我正在尝试将其更新为使用驱动程序v2.3.0

有一段代码根据不同搜索字段的存在构建IMongoQuery条目列表,例如

var queryList = new List<IMongoQuery>();
if (!string.IsNullOrEmpty(searchField1))
  queryList.Add(Query.Matches(sKey1, searchField1));
...
if (!string.IsNullOrEmpty(searchFieldN))
  queryList.Add(Query.Matches(sKeyN, searchFieldN));
var queryList=newlist();
如果(!string.IsNullOrEmpty(searchField1))
Add(Query.Matches(sKey1,searchField1));
...
如果(!string.IsNullOrEmpty(searchFieldN))
Add(Query.Matches(sKeyN,searchFieldN));
如何将其转换为新的FilterDefinitionBuilder语法?我在它的接口中没有看到类似的Add()方法

更新:

这就是我目前正在做的,它是丑陋的!如果有更好的方法,请告诉我

var builder = Builders<BsonDocument>.Filter;
FilterDefinition<BsonDocument> filter = null;

// do this for each search field
if (!string.IsNullOrEmpty(searchField1))
{
  if (filter == null)
    filter = builder.Eq(sKey1, searchField1);
  else
    filter = filter & builder.Eq(sKey1, searchField1);
}
var builder=Builders.Filter;
FilterDefinition filter=null;
//对每个搜索字段执行此操作
如果(!string.IsNullOrEmpty(searchField1))
{
if(filter==null)
filter=builder.Eq(sKey1,searchField1);
其他的
filter=filter&builder.Eq(sKey1,searchField1);
}

我知道很长时间过去了,但为了防止其他人来这里寻找解决方案,这里是2.3.12兼容方式

//create a filter definition builder
var fdefb = new FilterDefinitionBuilder<BsonDocument>(); //or FilterDefinitionBuilder<TModel>
//create a list of Filter Definitions
var queryList = new List<FilterDefinition<BsonDocument>>(); //or List<FilterDefinition<TModel>> 

// do this for each search field
if (!string.IsNullOrEmpty(searchField1))
{
   if (filter == null)
       filter = fdefb.Eq(sKey1, BsonValue.Create(searchField1));
   else
       filter &= fdefb.Eq(sKey1, BsonValue.Create(searchField1));
}
//创建过滤器定义生成器
var fdefb=新过滤器定义生成器()//或FilterDefinitionBuilder
//创建过滤器定义的列表
var queryList=新列表()//或列表
//对每个搜索字段执行此操作
如果(!string.IsNullOrEmpty(searchField1))
{
if(filter==null)
filter=fdefb.Eq(sKey1,BsonValue.Create(searchField1));
其他的
过滤器&=fdefb.Eq(sKey1,BsonValue.Create(searchField1));
}

请看这里是的,我在这里找到了我当前使用的代码。谢谢