Bonjour à toutes et a tous,

Je souhaiterais savoir qu'elles sont les méthodes que vous utilisez pour filtrer vos listes de données dans vos app MVC avec Entity framework.

Avez-vous une methode de filtrage "générique" => filtrage dynamique ?

Exemple : https://github.com/StefH/System.Linq.Dynamic.Core

Une méthode ou vous rechercher une chaine dans tous les champs de tables?

Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
        public List<Movie> GetMovies(FilteringParams filteringParams)
        {
            var query = this.movies.AsQueryable();
 
            var filterBy = filteringParams.FilterBy.Trim().ToLowerInvariant();
            if (!string.IsNullOrEmpty(filterBy))
            {
                query = query
                       .Where(m => m.LeadActor.ToLowerInvariant().Contains(filterBy)
                       || m.Title.ToLowerInvariant().Contains(filterBy)
                       || m.Summary.ToLowerInvariant().Contains(filterBy));
            }
 
            return query.ToList();
        }
Une méthode ou vous écrivez vous mème le "Where" (prédicat) en fonction des champs de recherche ?

Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
        public List<Movie> GetMovies(string title, string summary, string leadActor)
        {
            var query = this.movies.AsQueryable();
 
             if (!String.IsNullOrWhiteSpace(title)) query = query .Where(u => u.Title.Contains(title);
             if (!String.IsNullOrWhiteSpace(summary)) query = query .Where(u => u.Summary.Contains(summary);
             if (!String.IsNullOrWhiteSpace(leadActor)) query = query .Where(u => u.LeadActor.Contains(leadActor);
 
            return query.ToList();
        }
Autres méthodes ?


Je suis à la recherche d'une méthode la plus "propre" possible et également dynamique pour filtrer mes listes de données.
J'ai pu voir pas mal de solutions à droite et a gauche mais rien ne ma semblé bien structuré et super productif ^^

Je souhaiterais avoir vos avis sur la question.

Je vous remercie.