簡體   English   中英

嘗試按枚舉值篩選時,MongoDb C#驅動程序問題

[英]MongoDb C# Driver Issue when trying to filter by enum value

我需要一些幫助,我是MongoDb的新手,並且使用2.4.4 MongoDb.Driver for .Net。

我創建了一個用於強烈鍵入集合的類,並且其中的一個字段是枚舉。在添加find時,通過添加BsonRepresentation裝飾器,我設法使查詢返回的字符串而不是該字段的int。

我當前的問題是嘗試按該枚舉字段進行過濾時,我嘗試執行以下操作:

return await _context.Contacts
    .Find(x=> x.EnumField.ToString().Contains(searchTextParam)).ToListAsync();

這樣我就可以按該字段的文本值進行過濾,但這會引發運行時錯誤:

System.ArgumentException: Unsupported filter: {document}{EnumField}.ToString().Contains("searchValue").

在此先感謝,豪爾赫

一般而言,驅動程序中的LINQ集成不支持任何種類的LINQ語句,以我的經驗,在屬性上使用.ToString()是不支持(即無法被驅動程序解析)的方案之一。轉換為MongoDB查詢)。

https://stackoverflow.com/a/34033905/159446汲取靈感,您可能想要執行以下操作:

// 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM