public static List <LecteurResult> TrouverLecteursParSearch(string search) { List <LecteurResult> result = new List <LecteurResult>(); var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio"); var s = new MongoDB.Bson.BsonRegularExpression(search, "/i"); foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find( Builders <InfoLecteur> .Filter.And( Builders <InfoLecteur> .Filter.Eq(a => a.localisation, Properties.Settings.Default.Localisation), Builders <InfoLecteur> .Filter.Eq(a => a.deleted, false), Builders <InfoLecteur> .Filter.Or( Builders <InfoLecteur> .Filter.Regex(a => a.nom, s), Builders <InfoLecteur> .Filter.Regex(a => a.prénom, s), Builders <InfoLecteur> .Filter.Regex(a => a.commentaires, s) ) ) ).ToList()) { LecteurResult lr = new LecteurResult() { infoLecteur = il, lecteur = db.GetCollection <Lecteur>("Lecteur").Find(a => a._id == il.lecteurId).FirstOrDefault() }; result.Add(lr); } // Rechercher par titre foreach (Lecteur lecteur in db.GetCollection <Lecteur>("Lecteur").Find(Builders <Lecteur> .Filter.Regex(a => a.titre, s)).ToList()) { foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a.lecteurId == lecteur._id).ToList()) { if (il.deleted == false && result.Find(a => a.infoLecteur._id == il._id) == null) { result.Add(new LecteurResult() { infoLecteur = il, lecteur = lecteur }); } } } result.Sort((a, b) => { a.infoLecteur.nom = a.infoLecteur.nom ?? ""; b.infoLecteur.nom = b.infoLecteur.nom ?? ""; if (a.infoLecteur.nom.ToLower() != b.infoLecteur.nom.ToLower()) { return(a.infoLecteur.nom.ToLower().CompareTo(b.infoLecteur.nom.ToLower())); } else { return(a.infoLecteur.prénom.ToLower().CompareTo(b.infoLecteur.prénom.ToLower())); } }); return(result); }
public static dynamic ToDynamic(this BsonRegularExpression bsonRegularExpression) => bsonRegularExpression.ToRegex();