多くのC#開発者は、一般的なリストをDatatablesに変換するという課題に遭遇します。反射は解決策を提供しますが、より効率的な方法が存在します。 この記事では、最適なアプローチについて説明します
速度を速度
<code class="language-csharp">IEnumerable<sometype> data = ...; DataTable table = new DataTable(); using(var reader = ObjectReader.Create(data)) { table.Load(reader); }</code>pre-.net 3.5代替:反射とHyperdescriptor
パフォーマンスの最適化:HyperDescriptor
<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>パフォーマンスを最大化するために、オブジェクトタイプのHyperdescriptorを有効にすることが重要です。 ベンチマークテストは、大幅な速度の改善を明らかにしています:
標準メソッド:27179 ms
以上がgenericリストをC#のデータ容器に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。