Tukar IEnumerable kepada DataTable dengan cekap dalam C#
Artikel ini meneroka cara menukar koleksi IEnumerable kepada DataTables dengan cekap. Walaupun refleksi menyediakan kaedah, ia tidak cekap.
Kod berikut menyediakan penyelesaian yang lebih dioptimumkan:
<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>
Kaedah sambungan ini mengendalikan penukaran dengan cekap, termasuk mengendalikan nilai boleh batal. Pertimbangan jenis nullable memastikan integriti data dan hasil yang boleh dipercayai.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar IEnumerable kepada DataTable dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!