C#中高效率將IEnumerable轉換為DataTable
本文探討如何有效率地將IEnumerable集合轉換為DataTable。雖然反射提供了一種方法,但它效率低。
以下程式碼提供了更最佳化的解決方案:
<code class="language-csharp">public static DataTable ToDataTable<T>(this IEnumerable<T> items) { // 创建DataTable并收集属性 DataTable table = new DataTable(typeof(T).Name); PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); // 从属性添加列 foreach (var prop in props) { Type propType = prop.PropertyType; // 处理可空类型 if (propType.IsGenericType && propType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) propType = new NullableConverter(propType).UnderlyingType; table.Columns.Add(prop.Name, propType); } // 从属性值添加数据行 foreach (var item in items) { object[] values = new object[props.Length]; for (int i = 0; i < props.Length; i++) { values[i] = props[i].GetValue(item, null); } table.Rows.Add(values); } return table; }</code>
此擴充方法有效率地處理轉換,包括處理可空值。對可空類型的考慮確保了資料完整性和可靠的結果。
以上是如何在 C# 中有效率地將 IEnumerable 轉換為 DataTable?的詳細內容。更多資訊請關注PHP中文網其他相關文章!