列出到DataView

如何将List转换为.Net中的数据视图。

我的建议是将列表转换为DataTable,然后使用表的默认视图来构建DataView。

首先,您必须构建数据表:

//  is the type of data in the list. // If you have a List, for example, then call this as follows: // List ListOfInt; // DataTable ListTable = BuildDataTable(ListOfInt); public static DataTable BuildDataTable(IList lst) { //create DataTable Structure DataTable tbl = CreateTable(); Type entType = typeof(T); PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entType); //get the list item and add into the list foreach (T item in lst) { DataRow row = tbl.NewRow(); foreach (PropertyDescriptor prop in properties) { row[prop.Name] = prop.GetValue(item); } tbl.Rows.Add(row); } return tbl; } private static DataTable CreateTable() { //T –> ClassName Type entType = typeof(T); //set the datatable name as class name DataTable tbl = new DataTable(entType.Name); //get the property list PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entType); foreach (PropertyDescriptor prop in properties) { //add property as column tbl.Columns.Add(prop.Name, prop.PropertyType); } return tbl; } 

接下来,获取DataTable的默认视图:

 DataView NewView = MyDataTable.DefaultView; 

一个完整的例子如下:

 List ListOfInt = new List(); // populate list DataTable ListAsDataTable = BuildDataTable(ListOfInt); DataView ListAsDataView = ListAsDataTable.DefaultView;