//dtAll为全部数据
            DataTable dtFilter = dtAll.Copy(); 
           
            List<DataRow> listRow = new List<DataRow>();
            //listAll为我在dgv中选中行的数据
            foreach (Cost_FeeInfo cost in listAll) 
            {
                DataRow[] drSelect =dtAll.Select("BusinessNum='" + cost.BusinessNum  + "' and CostName='"+cost.CostName+"'");
                listRow.AddRange(drSelect);
            }
            foreach (DataRow dr in listRow) 
            {
                dtFilter.Rows.Add(dr);
            }问题是 我如何把我dtAll.select方法获得的数据添加到一个新的datatable
求高手解答

解决方案 »

  1.   


     static void Main(string[] args)
            {
                DataTable dt = MakeParentTable();
                DataTable dt2 = MakeNullTable();
                DataTable dt3 = new DataTable();
                dt.Select("id=1").ToList().ForEach(x =>
                {                DataRow row = dt2.NewRow();
                    row["id"] = x["id"];
                    row["ParentItem"] = x["ParentItem"];
                    dt2.Rows.Add(row);
                });
                Console.WriteLine(dt2.Rows[0]["id"].ToString());
                Console.Read();
            }        public static DataTable MakeParentTable()
            {
                // Create a new DataTable.
                System.Data.DataTable table = new DataTable("ParentTable");
                // Declare variables for DataColumn and DataRow objects.
                DataColumn column;
                DataRow row;
                DataSet dataSet;            // Create new DataColumn, set DataType,  
                // ColumnName and add to DataTable.    
                column = new DataColumn();
                column.DataType = System.Type.GetType("System.Int32");
                column.ColumnName = "id";
                column.ReadOnly = true;
                column.Unique = true;
                // Add the Column to the DataColumnCollection.
                table.Columns.Add(column);            // Create second column.
                column = new DataColumn();
                column.DataType = System.Type.GetType("System.String");
                column.ColumnName = "ParentItem";
                column.AutoIncrement = false;
                column.Caption = "ParentItem";
                column.ReadOnly = false;
                column.Unique = false;
                // Add the column to the table.
                table.Columns.Add(column);            // Make the ID column the primary key column.
                DataColumn[] PrimaryKeyColumns = new DataColumn[1];
                PrimaryKeyColumns[0] = table.Columns["id"];
                table.PrimaryKey = PrimaryKeyColumns;            // Instantiate the DataSet variable.
                dataSet = new DataSet();
                // Add the new DataTable to the DataSet.
                dataSet.Tables.Add(table);            // Create three new DataRow objects and add  
                // them to the DataTable 
                for (int i = 0; i <= 4; i++)
                {
                    row = table.NewRow();
                    row["id"] = i;
                    row["ParentItem"] = "ParentItem " + i;
                    table.Rows.Add(row);
                }            return dataSet.Tables[0];
            }        public static DataTable MakeNullTable()
            {
                System.Data.DataTable table = new DataTable("ParentTable");
                // Declare variables for DataColumn and DataRow objects.
                DataColumn column;
                DataRow row;
                DataSet dataSet;            // Create new DataColumn, set DataType,  
                // ColumnName and add to DataTable.    
                column = new DataColumn();
                column.DataType = System.Type.GetType("System.Int32");
                column.ColumnName = "id";
                column.ReadOnly = true;
                column.Unique = true;
                // Add the Column to the DataColumnCollection.
                table.Columns.Add(column);            // Create second column.
                column = new DataColumn();
                column.DataType = System.Type.GetType("System.String");
                column.ColumnName = "ParentItem";
                column.AutoIncrement = false;
                column.Caption = "ParentItem";
                column.ReadOnly = false;
                column.Unique = false;
                // Add the column to the table.
                table.Columns.Add(column);            // Make the ID column the primary key column.
                DataColumn[] PrimaryKeyColumns = new DataColumn[1];
                PrimaryKeyColumns[0] = table.Columns["id"];
                table.PrimaryKey = PrimaryKeyColumns;
                return table;
            }
    代码直接从msdn上copy过来的
      

  2.   

    DataTable dtAll=CreateDataTable();
    //筛选年龄大于20的集合后添加到新的DataTable 中
                    DataTable newDataTable = dtAll.Select("age>20").CopyToDataTable();
      

  3.   


    var rows = from row in dtAll.AsEnumerable().Select(item => item.Field<string>("BusinessNum") == cost.BusinessNum  && item.Field<string>("CostName=") == cost.CostName)
       select row;
    dtFilter.Rows.Add(rows);
      

  4.   


    var rows = from row in dtAll.Select(string.Format("BusinessNum={0} and CostName={1}", cost.BusinessNum, cost.CostName))
       select row;
    dtFilter.Rows.Add(rows);
      

  5.   


    DataTable dtFilter = dtAll.Clone();
    var rows = dtAll.Select(string.Format("BusinessNum='{0}' and CostName='{1}'", cost.BusinessNum, cost.CostName));
    dtFilter.Rows.Add(rows);
      

  6.   

    如果你的新的datatable里面没有数据,按二楼的来,如果你新的datatable里面有数据,并且框架和之前的相同则做如下处理:
    DataTable dtAll=CreateDataTable();//筛选年龄大于20的集合后添加到新的DataTable中DataTable newDataTable.Merge(dtAll.Select("age>20").CopyToDataTable());
      

  7.   

    如果你的新的datatable里面没有数据,按二楼的来,如果你新的datatable里面有数据,并且框架和之前的相同则做如下处理:DataTable dtAll=CreateDataTable();//筛选年龄大于20的集合后添加到新的DataTable中
    newDataTable.Merge(dtAll.Select("age>20").CopyToDataTable());