读书人

linq to DataTable有点行有些不行

发布时间: 2012-12-26 14:39:28 作者: rapoo

linq to DataTable有些行有些不行?

  public static DataTable CopyToDataTable<T>( IEnumerable<T> array)
{
var ret = new DataTable();
foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
// if (!dp.IsReadOnly)
ret.Columns.Add(dp.Name, dp.PropertyType);
foreach (T item in array)
{
var Row = ret.NewRow();
foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
// if (!dp.IsReadOnly)
Row[dp.Name] = dp.GetValue(item);
ret.Rows.Add(Row);
}
return ret;
}

这方法来自网上.应该很多人用的.
到转换这句话就出错了. foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
调用:
DataClasses1DataContext w1 = new DataClasses1DataContext();
DataTable w3 = CopyToDataTable<b1>(w1.b1.ToList());
调试时.id列就能转换了.age列就不能转.这是怎么回事.
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public long id
{
get
{
return this._id;
}
set
{
if ((this._id != value))
{
this.OnidChanging(value);
this.SendPropertyChanging();
this._id = value;
this.SendPropertyChanged("id");
this.OnidChanged();
}
}
}

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_age", DbType="BigInt")]
public System.Nullable<long> age
{
get
{
return this._age;
}
set
{
if ((this._age != value))
{
this.OnageChanging(value);
this.SendPropertyChanging();
this._age = value;
this.SendPropertyChanged("age");
this.OnageChanged();
}
}
}



[解决办法]
Try:

http://blog.csdn.net/q107770540/article/details/6556210

读书人网 >.NET

热点推荐