3

リストへの入力として別のデータ テーブルから値を取得しています。これらのリストの値を別の DataTable に保存する必要があります。

リスト:

List<DataRow> list = slectedFieldsTable.AsEnumerable().ToList();
foreach (DataRow dr in slectedFieldsTable.Rows)
{
    list.Add(dr);
}

新しいデータ テーブル:

DataRow newRow = tempTable.NewRow();
newRow["Field Name"] = fieldLabel;
newRow["Field Type"] = fieldType;

for(int gg =0 ; gg<list.Count; gg++)
{
    tempTable.Rows.Add(????);
}

ここで、新しいデータ テーブルに行を追加するのに行き詰まっています。

4

5 に答える 5

8
public static DataTable ToDataTable<T>(List<T> items)
{
        DataTable dataTable = new DataTable(typeof(T).Name);

        //Get all the properties
        PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
        foreach (PropertyInfo prop in Props)
        {
            //Setting column names as Property names
            dataTable.Columns.Add(prop.Name);
        }
        foreach (T item in items)
        {
           var values = new object[Props.Length];
           for (int i = 0; i < Props.Length; i++)
           {
                //inserting property values to datatable rows
                values[i] = Props[i].GetValue(item, null);
           }
           dataTable.Rows.Add(values);
      }
      //put a breakpoint here and check datatable
      return dataTable;
}
于 2013-11-28T10:29:37.790 に答える
6

変数宣言:

    DataTable tempTable = new DataTable();
    DataTable slectedFieldsTable = new DataTable();
    DataRow newRow;
    List<object> list = new List<object>();

DataTable に列を追加します。

    slectedFieldsTable = new DataTable();
    slectedFieldsTable.Columns.Add("Field Name");
    slectedFieldsTable.Columns.Add("Field Type");

DataTable に値を追加します。

    slectedFieldsTable.Rows.Add("1", "AAA");
    slectedFieldsTable.Rows.Add("2", "BBB");
    slectedFieldsTable.Rows.Add("3", "CCC");

DataTable をリストに変換します。

  foreach (DataRow dr in slectedFieldsTable.Rows)
    {
        list.Add(dr);
    }

別の DataTable に列を追加します。

    tempTable.Columns.Add("Field Name", typeof(string));
    tempTable.Columns.Add("Field Type", typeof(string));

List を dataTable に変換します。

   foreach(DataRow dr in list)
    {
        newRow = tempTable.NewRow();
        newRow["Field Name"] = dr.ItemArray[0].ToString();
        newRow["Field Type"] = dr.ItemArray[1].ToString();
        tempTable.Rows.Add(newRow);
        tempTable.AcceptChanges();
    }
于 2014-01-23T15:38:59.407 に答える
2

CopyToDataTable() メソッドを使用します。 CopyToDataTable

IEnumerable<DataRow> query = TempselectedFieldsTable.AsEnumerable().ToList();

// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();
于 2013-02-28T05:38:06.547 に答える
0

これを試して:

     foreach (DataRow dr in list)
     {
        tempTable.Rows.Add(dr);
     }
于 2013-02-28T05:52:26.710 に答える