1

VS2010 と C# を使用しています。リストに変換したいDataTableが1つあります。

Suppose:
Table dt;

実行時に、データテーブルから同様のフィールドを作成し、List のフィールドに入力したいと考えています。リスト プロパティの既存のクラスはありません。

ListName=TableName
List property name=Table column name
List Property type=Table column type
List items=Table rows

注:最近 EF に取り組んでいます。プロジェクトの要件を満たすには、実行時に ESQL を入力して実行するための柔軟性を提供する必要があります。この実行結果をデータテーブルに入れたりList<DataRow>、この結果をリストに入れたりしたくありません。リストには既存のクラスとプロパティがありません。リスト Type:DataRow の DataTable を変換したくありません

4

1 に答える 1

1

何をしようとしているのかはまだわかりませんが、動的オブジェクトのリストを作成したい場合は、試してみてくださいdynamic

var dynamicList = new List<dynamic>();   

次に、そのリストに値を割り当てる必要がありますExpandoObject

IDictionaryまた、列名をプロパティとして渡す には、キャストする必要があります。

そして、このようなリストアイテムにアクセスできますitem.YourColumnName

完全な例を次に示します。

            var dynamicList = new List<dynamic>();
            DataTable dt = new DataTable();
            dt.Columns.Add("Col1");
            dt.Columns.Add("Col2");
            dt.Rows.Add("val1","val2");
            dt.Rows.Add("val3", "val4");
            foreach (DataRow dr in dt.Rows)
            {
                dynamic myObj = new ExpandoObject();
                var p = myObj as IDictionary<string, object>;
                p[dr.Table.Columns[0].ColumnName] = dr[0];
                p[dr.Table.Columns[1].ColumnName] = dr[1];
                dynamicList.Add(p);
            }

            foreach (var item in dynamicList)
            {
                Console.WriteLine(item.Col1 + " " + item.Col2);
            }   

またはlinqはもちろん、値を出力するためにも機能します:

dynamicList.ForEach(x => Console.WriteLine(x.Col1 + " " + x.Col2));   

このプログラムは次のように出力します。

val1 val2
val3 val4
于 2012-12-06T18:25:03.883 に答える