Ich habe schließlich eine Lösung für dieses Problem gefunden, nach langem Suchen fand ich heraus, dass toLower()
Methoden sind nicht im linq-Anbieter von mongoDb implementiert, daher musste ich zur Verwendung von MongoQuery wechseln
Ich habe einige Erweiterungsmethoden für Zeichenfolgen und Listen erstellt, bei denen die Zeichenfolge oder Liste als Quelle verwendet und in einen regulären bson-Ausdruck konvertiert wird
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");
}
und dann werden sie so verwendet...
var colours = new List<string> { "Red", "blue", "white" };
var query = Query<myObject>.In(v => v.Colour, colours.ConvertToCaseInsensitiveRegexList());
this.Find(query).ToList();