Bonjour à tous,

J'ai une fonction avec une énumération en paramètre qui me retourne un DataTable après une série d'itération. Le problème est que à chaque tentative, un problème de CAST surgit:

Voici ma fonction:
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
38
39
 
        public static DataTable GetLINQToDataTable<t>(IEnumerable<t>  varlist)
        {
            DataTable dtReturn = new DataTable();
 
            // column names 
            PropertyInfo[] oProps = null;
 
            if (varlist == null) return dtReturn;
 
            foreach (IEnumerable<t> rec in varlist)
            {
 
                if (oProps == null)
                {
                    foreach (PropertyInfo pi in oProps)
                    {
                        Type colType = pi.PropertyType;
                        if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                        {
                            colType = colType.GetGenericArguments()[0];
                        }
 
                        dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
 
                    }
                }
 
                DataRow dr = dtReturn.NewRow();
 
                foreach (PropertyInfo pi in oProps)
                {
                    dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
                }
 
            }
 
            return dtReturn;
        }
J'appelle cette fonction comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
                    IEnumerable<Person > listePerson  = (from oPerson in ContexteDAO.ContexteDonnees.Persons
                    where oPerson .CodeCompagnie == aCodeCompagnie
                    select oPerson ).ToList();
 
                        DataTable dt = new DataTable();
 
                        dt = LINQToDataTable(listePerson);
Lors du débogage, le programme saute au niveau du :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
foreach (IEnumerable<t> rec in varlist)
Merci de me donner un coup de main.