Bonjour,

Comment passer une liste à un DbParameter.value ?

J'ai tenté ceci :

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
32
33
34
35
36
37
 
private List<Bien> GetBienFromLstFavorisDB(DbConnection cnx, List<Favoris> LstFavoris)
    {
        List<Bien> listeBien = new List<Bien>();
        using (DbCommand cmd = cnx.CreateCommand())
        {
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.CommandText = "SELECT  * FROM Bien where idBien IN (@lstIdBien) ";
 
            DbParameter lstIdBien = cmd.CreateParameter();
            lstIdBien.ParameterName = "@lstIdBien";
            lstIdBien.DbType = System.Data.DbType.Int32;
            lstIdBien.Value = LstFavoris.FindAll(x => x.IdBien != -1).ToList();
            lstIdBien.Direction = System.Data.ParameterDirection.Input;
            cmd.Parameters.Add(lstIdBien);
 
            using (DbDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    Bien bien = new Bien();
                    bien.Id = reader["idBien"] == DBNull.Value ? default(int) : int.Parse(reader["idBien"].ToString());
                    bien.PrixComComprise = reader["prixComComprise"] == DBNull.Value ? default(int) : int.Parse(reader["prixComComprise"].ToString());
                    bien.Surface = reader["surface"] == DBNull.Value ? default(int) : int.Parse(reader["surface"].ToString());
                    bien.TextAnnonce = reader["textAnnonce"] == DBNull.Value ? default(String) : (reader["textAnnonce"].ToString());
                    bien.PhotoPrincipal = reader["nomFic"] == DBNull.Value ? default(String) : (reader["nomFic"].ToString());
                    bien.CP = reader["cp"] == DBNull.Value ? default(String) : (reader["cp"].ToString());
                    listeBien.Add(bien);
                }
            }
 
 
        }
 
        return listeBien;
 
    }
mais cela ne fonctionne pas.
Il faut bien conserver cela : ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 lstIdBien.DbType = System.Data.DbType.Int32;
 lstIdBien.Value = LstFavoris.FindAll(x => x.IdBien != -1).ToList();
Merci d'avance

Nath