So konvertieren Sie eine Liste zu einer Datenansicht in .Net.Liste <T> zu DataView
10
A
Antwort
18
Mein Vorschlag wäre, die Liste in eine DataTable zu konvertieren und dann die Standardansicht der Tabelle zu verwenden, um Ihre DataView zu erstellen.
Zunächst müssen Sie die Datentabelle erstellen:
// <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;
}
nächstes die Standardansicht des Datatable erhalten:
DataView NewView = MyDataTable.DefaultView;
Ein komplettes Beispiel würde wie folgt aussehen:
List<int> ListOfInt = new List<int>();
// populate list
DataTable ListAsDataTable = BuildDataTable<int>(ListOfInt);
DataView ListAsDataView = ListAsDataTable.DefaultView;
+1
Eine geringfügige Korrektur CreateTable sollte ebenfalls statisch sein. – user3141326
A eher objektorientiert als die angenommene Antwort wäre eine Methode, die Antworten auf diese Frage ähnlich ist. [Sortieren Sie eine Liste mit Abfrageausdrücken] (http://stackoverflow.com/questions/695906/sort-a-listt-using-query-expressions) Dies ist davon ausgegangen, dass der einzige Grund, dass Sie eine Liste möchten Eine Datenansicht dient der Sortierfunktionalität. –
Amicable