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>
この拡張メソッドは、Null 許容値の処理を含め、変換を効率的に処理します。 Null 許容型を考慮することで、データの整合性と信頼性の高い結果が保証されます。
以上がC# で IEnumerable を DataTable に効率的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。