MongoDb C#尝试按枚举值筛选时出现驱动程序问题
我需要一些帮助,我是MongoDb新手,正在使用.Net的2.4.4 MongoDb.Driver 我创建了一个类来强类型我的集合,它的一个字段是enum,我通过添加BsonRepresentation装饰符使查询在使用find时返回一个字符串而不是该字段上的int 我当前的问题是,在尝试按该枚举字段进行筛选时,我尝试执行以下操作: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
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();
我有完全相同的问题,我很好奇你解决了这个问题吗?谢谢