Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
MongoDb C#尝试按枚举值筛选时出现驱动程序问题_C#_Mongodb_Enums - Fatal编程技术网

MongoDb C#尝试按枚举值筛选时出现驱动程序问题

MongoDb C#尝试按枚举值筛选时出现驱动程序问题,c#,mongodb,enums,C#,Mongodb,Enums,我需要一些帮助,我是MongoDb新手,正在使用.Net的2.4.4 MongoDb.Driver 我创建了一个类来强类型我的集合,它的一个字段是enum,我通过添加BsonRepresentation装饰符使查询在使用find时返回一个字符串而不是该字段上的int 我当前的问题是,在尝试按该枚举字段进行筛选时,我尝试执行以下操作: return await _context.Contacts .Find(x=> x.EnumField.ToString().Contains(se

我需要一些帮助,我是MongoDb新手,正在使用.Net的2.4.4 MongoDb.Driver

我创建了一个类来强类型我的集合,它的一个字段是enum,我通过添加BsonRepresentation装饰符使查询在使用find时返回一个字符串而不是该字段上的int

我当前的问题是,在尝试按该枚举字段进行筛选时,我尝试执行以下操作:

return await _context.Contacts
    .Find(x=> x.EnumField.ToString().Contains(searchTextParam)).ToListAsync();
所以我可以根据该字段的文本值进行筛选,但这会引发运行时错误:

System.ArgumentException: Unsupported filter: {document}{EnumField}.ToString().Contains("searchValue").
提前感谢,,
Jorge

一般来说,驱动程序中的LINQ集成不支持任何类型的LINQ语句,根据我的经验,在属性上使用
.ToString()
是不受支持的场景之一(即驱动程序无法解析以转换为MongoDB查询)

从中汲取灵感,您可能想做如下事情:

// assuming your class is also called Contacts
var filter = Builders<Contacts>.Filter.Regex(x => x.EnumField, 
              BsonRegularExpression.Create(searchTextParam));
return await _context.Contacts
     .Find(filter).ToListAsync();
//假设您的类也被称为Contacts
var filter=Builders.filter.Regex(x=>x.EnumField,
创建(searchTextParam));
返回等待上下文联系人
.Find(filter.toListSync();

我有完全相同的问题,我很好奇你解决了这个问题吗?谢谢