slt voila j'aimerais pourvoir reformule une requete sql mais malgré mes effort je ne parviens pas toujours a l'optimiser

voici a quoi ma requête sur sql ressemble :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   select = "SELECT * ";
               from = " FROM Etudiant,EtudiantMatiere ";
                where = " WHERE Etudiant.EtudiantId = EtudiantMatiere.EtudiantId ";
 
               if (etudiant.FirstName != null && etudiant.FirstName.Length > 0)
               {
                 where = where + " AND Etudiant.FirstName  LIKE  '%" + etudiant.FirstName + "%'";
                }
                if (etudiant.Cycle.Length > 0)
                {
                   where = where + " AND EtudiantMatiere.Cycles LIKE  '%" + etudiant.Cycle + "%'";
                }
 
                if (etudiant.options != null && etudiant.options.Length > 0)
                {
                    where = where + " AND EtudiantMatiere.options LIKE  '%" + etudiant.options + "%'";
                }
 
 
                if (etudiant.groupe != null && etudiant.groupe.Length > 0)
                {
                   where = where + " AND EtudiantMatiere.groupe LIKE  '%" + etudiant.groupe + "%'";
                }
 
                if (etudiant.Niveau != null && etudiant.Niveau.Length > 0)
                {
                    where = where + " AND EtudiantMatiere.Niveau LIKE  '%" + etudiant.Niveau + "%'";
                }
 
 
                query = select + " " + from + " " + where;
mais lorsque j'utilise un modele pour la reproduire lá mes contraintes ne sont pas optimal.
bref voici a quoi resemble ma requete a travers le model :

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
17
18
19
20
21
22
23
24
25
26
27
 
 IQueryable etudiantliste = from et in _db.Etudiants
                                           from etm in _db.EtudiantMatieres
                                           where
                                           (
                                           et.FirstName.Contains(etudiant.FirstName)
                                           && etm.Cycles.Contains(etudiant.Cycle)
                                           && etm.options.Contains(etudiant.options)
                                           && etm.groupe.Contains(etudiant.groupe)
                                           && etm.Niveau.Contains(etudiant.Niveau)
                                           )
                                           select new EtudiantModel
                                           {
                                               EtudiantId = et.EtudiantId,
                                               FirstName = et.FirstName,
                                               LastName = et.LastName,
                                               Sexe = et.Sexe,
                                               Numero = et.Numero,
                                               Contact = et.contact,
                                               Matricule = et.Matricule,
                                               Email = et.Email,
                                               Cycle = etm.Cycles,
                                               options = etm.options,
                                               groupe = etm.groupe,
                                               Niveau = etm.Niveau
 
                                           };
l'approche avec le modèle ne me retourne qu'un seul enregistrement alors que je souhait obtenir plusieurs.alors comment rendre ma requête plus optimal.
tout conseil,idée ou assistance serais la bien venu.