c# - 如何将多个数据表存储到单个数据集中

标签 c# asp.net ado.net

我有多个数据表。我想将所有数据表行显示到一个 gridview 中。 我该怎么做?

DataTable dtbag101 = (DataTable)Session["bag101"];
DataTable dtwallet111 = (DataTable)Session["wallet111"];


DataSet ds= new DataSet();
ds.Tables.Add(dtbag101);
ds.Tables.Add(dtwallet111);

GridView1.DataSource= ds;
GridView1.DataBind();

两个数据表的列名相同。 在这里,我尝试使用数据集,但只有第一个 DataTable,即 datbag101 显示在 gridview 中。

如何在一个 GridView 中显示所有值?

最佳答案

假设您的两个数据表具有相同的列,您可以使用一些方便的 LINQ 将它们 UNION。

DataTable dtbag101 = (DataTable)Session["bag101"];
DataTable dtwallet111 = (DataTable)Session["wallet111"];

var result = dtbag101.AsEnumerable().Union(dtwallet111.AsEnumerable());

GridView1.DataSource = result;
GridView1.DataBind();

否则尝试使用DataTable.Merge:

DataTable dtbag101 = (DataTable)Session["bag101"];
DataTable dtwallet111 = (DataTable)Session["wallet111"];

dtbag101.Merge(dtwallet111, true);

GridView1.DataSource = dtbag101;
GridView1.DataBind();

我不确定为什么这对您不起作用。试试这个方法(从 here 中获取):

public static DataTable Union(DataTable First, DataTable Second)
{
      //Result table
      DataTable table = new DataTable("Union");

      //Build new columns
      DataColumn[] newcolumns = new DataColumn[First.Columns.Count];

      for(int i=0; i < First.Columns.Count; i++)
      {
          newcolumns[i] = new DataColumn(
          First.Columns[i].ColumnName, First.Columns[i].DataType);
      }

      table.Columns.AddRange(newcolumns);
      table.BeginLoadData();

      foreach(DataRow row in First.Rows)
      {
           table.LoadDataRow(row.ItemArray,true);
      }

      foreach(DataRow row in Second.Rows)
      {
          table.LoadDataRow(row.ItemArray,true);
      }

      table.EndLoadData();
      return table;
}

用你的两个数据表调用方法:

GridView1.DataSource = Union(dtbag101, dtwallet111);

关于c# - 如何将多个数据表存储到单个数据集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411448/

相关文章:

c# - 在Windows服务器中读取Excel

c# - 如何在服务器上未安装 MS Office 的情况下在 asp.net 中将 docx 转换为 pdf

sql - vb.net中使用oledb获取sql server print语句的值

c# - 添加到 IEnumerable 的代码

c# - 如何解释没有任何拆分意义的控制台值?

asp.net - LINQ 查询中的默认值

sql-server - 测试自定义 ORM 解决方案性能开销 - 如何?

c# - ExecuteNonQueryAsync 并在 SQL 事务中提交

c# - OpenOrder 仅针对第一个打开订单的交互式经纪人

c# - 使用非静态方法的线程