>許多C#開發人員遇到將通用列表轉換為DataTables的挑戰。雖然反射提供了解決方案,但存在更有效的方法。 本文探討了最佳方法。
為了出色的性能,強烈建議使用FastMember庫(通過Nuget獲得):
<code class="language-csharp">IEnumerable<sometype> data = ...; DataTable table = new DataTable(); using(var reader = ObjectReader.Create(data)) { table.Load(reader); }</code>
性能優化:超刪除者
<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>
標準方法:27179 ms
以上是如何有效地將通用列表轉換為C#中的數據列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!