C #-Efficacité moyenne élevée convertissant la liste générique en DataTable
Dans le développement de logiciels, les données sont souvent nécessaires au format structuré. DataTable est une structure de données commune qui fournit des formulaires de données. Cependant, vous pouvez rencontrer la situation où les données qui doivent être traitées sont stockées dans la liste générique ou un objet d'énumération. Dans ce cas, une méthode est nécessaire pour convertir la liste ou l'objet accessible en DataTable.
Vous pouvez utiliser la bibliothèque FastMember sur NuGet pour obtenir une solution efficace et pratique. En utilisant FastMember, vous pouvez utiliser le code suivant pour exécuter la conversion:
Réalisation de la conversion personnalisée
<code class="language-csharp">IEnumerable<sometype> data = ...; DataTable table = new DataTable(); using (var reader = ObjectReader.Create(data)) { table.Load(reader); }</code>
Si vous préférez la méthode de conversion personnalisée, vous pouvez utiliser la fonction hyperdéscripteur dans Reflection ou .NET 2.0 pour créer DataTable à partir de la liste. Ceci est un exemple d'implémentation:
Précautions de performance
<code class="language-csharp">public static DataTable ToDataTable<T>(this IList<T> data) { PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); for (int i = 0; i < props.Count; i++) { PropertyDescriptor prop = props[i]; table.Columns.Add(prop.Name, prop.PropertyType); } foreach (T item in data) { DataRow row = table.NewRow(); for (int i = 0; i < props.Count; i++) { row[i] = props[i].GetValue(item); } table.Rows.Add(row); } return table; }</code>
Conclusion
La conversion de la liste générique ou un objet d'énumération à DataTable est une tâche courante dans la programmation C #. En utilisant la bibliothèque FastMember ou en réalisant une conversion personnalisée, les développeurs peuvent implémenter efficacement cette conversion.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!