C# · 12月 30, 2021

c# – 列出DataView

如何将List转换为.Net中的dataview.解决方法 我的建议是将列表转换为DataTable,然后使用表的默认视图构建您的DataView.

首先,你必须建立数据表:

// <T> is the type of data in the list.// If you have a List<int>,for example,then call this as follows:// List<int> ListOfInt;// DataTable ListTable = BuildDataTable<int>(ListOfInt);public static DataTable BuildDataTable<T>(IList<T> lst){ //create DataTable Structure DataTable tbl = CreateTable<T>(); 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>(){ //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<int> ListOfInt = new List<int>();// populate listDataTable ListAsDataTable = BuildDataTable<int>(ListOfInt);DataView ListAsDataView = ListAsDataTable.DefaultView;