C# で IEnumerable を DataTable に効率的に変換する
IEnumerable を DataTable に変換すると、開発者は構造化された表形式でデータを処理できるようになります。ただし、既存のソリューションは非効率的なリフレクションベースのアプローチに依存していることがよくあります。この質問は、より効率的な代替手段を見つけることを目的としています。
まず、提供された回答のコード スニペットは、便利な拡張メソッドを提供します。
<code class="language-csharp">public static DataTable ToDataTable<T>(this IEnumerable<T> items) { // 使用类型名称初始化DataTable var table = new DataTable(typeof(T).Name); // 获取类型的公共属性 PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); // 将属性作为列添加到DataTable foreach (var property in properties) { var propertyType = property.PropertyType; // 处理可空类型 if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) { propertyType = Nullable.GetUnderlyingType(propertyType); } table.Columns.Add(property.Name, propertyType); } // 将每个T的属性值作为行添加到DataTable foreach (var item in items) { var values = new object[properties.Length]; for (int i = 0; i < properties.Length; i++) { values[i] = properties[i].GetValue(item); } table.Rows.Add(values); } return table; }</code>
この拡張メソッドは、IEnumerable
以上がC# で IEnumerable を DataTable に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。