Saya akhirnya menemukan solusi untuk masalah ini, setelah banyak menggali saya menemukan bahwa toLower()
metode tidak diimplementasikan di penyedia linq mongoDb jadi saya harus mengubah menggunakan MongoQuery
Saya membuat beberapa metode ekstensi untuk string dan daftar di mana ia mengambil string atau daftar sebagai sumber dan mengubahnya menjadi ekspresi reguler 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");
}
dan kemudian mereka digunakan seperti ini...
var colours = new List<string> { "Red", "blue", "white" };
var query = Query<myObject>.In(v => v.Colour, colours.ConvertToCaseInsensitiveRegexList());
this.Find(query).ToList();