sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB c#-drivrutin:Skiftlägesokänslig Jämför med in eller innehåller på en lista med linq

Jag hittade så småningom en lösning på det här problemet, efter mycket grävande upptäckte jag att toLower() metoder är inte implementerade i mongoDb linq-leverantören så jag var tvungen att byta till att använda MongoQuery

Jag skapade några tilläggsmetoder för sträng och lista där den tar strängen eller listan som en källa och konverterar den till ett bson reguljärt uttryck

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");
}

och sedan används de så här...

var colours = new List<string> { "Red", "blue", "white" };
var query = Query<myObject>.In(v => v.Colour, colours.ConvertToCaseInsensitiveRegexList());
this.Find(query).ToList();


  1. Namnkonvention och giltiga tecken för en Redis-nyckel

  2. Hur man frågar ett relativt element med MongoDB

  3. Bluemix Mongodb :Det gick inte att autentisera

  4. visar summan av alla hämtade filer i mongodb-nodejs drivrutin