J'ai finalement trouvé une solution à ce problème, après de nombreuses recherches, j'ai trouvé que le toLower()
les méthodes ne sont pas implémentées dans le fournisseur mongoDb linq, j'ai donc dû passer à l'utilisation de MongoQuery
J'ai créé des méthodes d'extension pour la chaîne et la liste où il prend la chaîne ou la liste comme source et la convertit en une expression régulière bson
internal static List<BsonValue> ConvertToCaseInsensitiveRegexList(this IEnumerable<string> source)
{
return source.Select(range => new BsonRegularExpression("/^" + range.Replace("+", @"\+") + "$/i")).Cast<BsonValue>().ToList();
}
internal static List<BsonValue> ConvertToEndsWithRegexList(this IEnumerable<string> source)
{
return source.Select(range => new BsonRegularExpression("/" + range.Replace("+", @"\+") + "$/i")).Cast<BsonValue>().ToList();
}
internal static BsonRegularExpression ToCaseInsensitiveRegex(this string source)
{
return new BsonRegularExpression("/^" + source.Replace("+", @"\+") + "$/i");
}
et puis ils sont utilisés comme ça...
var colours = new List<string> { "Red", "blue", "white" };
var query = Query<myObject>.In(v => v.Colour, colours.ConvertToCaseInsensitiveRegexList());
this.Find(query).ToList();