サンプルでは、グリッドコントロールのピボット情報を指定したアイテムのソースで表示しようとしました。この場合、アイテムのソースを渡すために、DataTable
をC#のIList<myType>
に変換する必要があります。DataTableをIListにすばやく変換するには<myType>
DataTable
をIList
に変換するために、以下のコードを含む従来の変換方法をすべて試しました。
dt.AsEnumerable().Cast<object>().ToList()
しかし、すべての伝統的な方法は、私は正確にそれぞれの列に使用されているオブジェクトとそのタイプがDataTable
にあるかわからない、ので、私のために有用ではありません。 DataTable
には、より多くの列数と行数があります。
たとえば、データテーブルに次の列の値があります。
PlanRowPID,PlanRowClass,PlanRowVendor,PlanRowColor
PID 0,CLASS 8,VENDOR A,COLOR D
PID 1,CLASS 7,VENDOR B,COLOR C
PID 2,CLASS 9,VENDOR C,COLOR B
PID 3,CLASS 6,VENDOR D,COLOR B
そして最後に私がやりたい、次のプロ文法的に、データから、それぞれ、すべてのオブジェクトを追加することはできませんので、私は、10000のを超えるデータ列を持っている私のアプリケーションで
IList<myType> list = new IList<myType>;
list.Add(new myType() {PlanRowPID = "PID 0",PlanRowClass = "CLASS 8",PlanRowVendor = "VENDOR A",PlanRowColor=COLOR D});
list.Add(new myType() {PlanRowPID = "PID 1",PlanRowClass = "CLASS 7",PlanRowVendor = "VENDOR B",PlanRowColor=COLOR C});
list.Add(new myType() {PlanRowPID = "PID 2",PlanRowClass = "CLASS 9",PlanRowVendor = "VENDOR C",PlanRowColor=COLOR B});
各列のデータ型をDataTable
で見つけて、myType
クラスの型に基づいてプロパティを作成するために、より多くの時間と知識を費やす必要があります。
DataTable
をIList<myType>
に変換する最適かつ迅速な方法を指定してください。
Entity FrameworkのようなORMを使用しようとしましたか? – dymanoid
はい、ORMは、エンティティの数が少ない場合にのみ役立ちます。多くのエンティティがある場合は、各列のデータ型を検索してクラスを作成するのは難しいです。タイプを見つけてクラスを効率的に作成するためのプログラム的な方法が必要です。 –
10,000カラムがある理由をお聞かせください。 – mjwills