詳細については、thisを参照してください。
コアコードサンプルは
public static DataTable ToDataTable<T>(this IEnumerable<T> collection)
{
DataTable dt = new DataTable();
Type t = typeof(T);
PropertyInfo[] pia = t.GetProperties();
//Create the columns in the DataTable
foreach (PropertyInfo pi in pia)
{
if ((pi.PropertyType.IsGenericType))
{
Type typeOfColumn = pi.PropertyType.GetGenericArguments()[0];
dt.Columns.Add(pi.Name, typeOfColumn);
}
else
dt.Columns.Add(pi.Name, pi.PropertyType);
}
//Populate the table
foreach (T item in collection)
{
DataRow dr = dt.NewRow();
dr.BeginEdit();
foreach (PropertyInfo pi in pia)
{
dr[pi.Name] = pi.GetValue(item, null);
}
dr.EndEdit();
dt.Rows.Add(dr);
}
return dt;
}
}
は、なぜあなたはデータ変換アプリを遅くすることを思いますか?あなたのプロフィールでしたか?
IEnumerableを匿名の理由として受け取ったと言われているように、私の結果をフィルタリングする必要があります。これは、アップグレードする必要がある古いコードです。 – IamStalker
もう一つ、このメソッドはNullable <>をサポートしていません。nullableを取得するには、このメソッドを変更する必要があります。 – IamStalker
WPFアプリケーションで動作するようにコードを少し修正する必要がありましたが、完璧な答えです –