none
类型转换求教高手2? RRS feed

  • 问题

  • 使用以下代码放在另一个静态类中实现IQueryable转换成table型,一般情况下以下代码是没问题的,但当用linq左关联两个表后,有些关联右边的表所关联出来的会出现空值,在datagrid中正常也能显示,可是用了以下代码转换成table型后就会提示出错。求教高手指教,谢谢!

    public static DataTable CopyToDataTable<T>(this IEnumerable<T> array)
            {
                var ret = new DataTable();
                foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                {
                    Type propType = dp.PropertyType;
                    if (propType.IsGenericType &&
                        propType.GetGenericTypeDefinition() == typeof(Nullable<>))
                    {
                        propType = Nullable.GetUnderlyingType(propType);
                    }
                    ret.Columns.Add(dp.Name, propType);
                }
                foreach (T item in array)
                {
                    var Row = ret.NewRow();
                    foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                        if (dp.GetValue(item) == null)
                            Row[dp.Name] = null;
                        else
                            Row[dp.Name] = dp.GetValue(item);
                    //foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                    //    Row[dp.Name] = dp.GetValue(item);
     
                    ret.Rows.Add(Row);
                }
                return ret;
            }
    • 已编辑 hzpemu 2012年3月1日 5:58
    2012年3月1日 5:57

答案

全部回复