首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

能否取出datatable中某列,将其变成另外一个datatable呢?该如何解决

2012-04-10 
能否取出datatable中某列,将其变成另外一个datatable呢?在数据库中按条件查询得到一个具有多列的表,是否有

能否取出datatable中某列,将其变成另外一个datatable呢?
在数据库中按条件查询得到一个具有多列的表,是否有什么方法,将这个表按照列拆分为多个表。

datatable的select()方法只能设置过滤字符,能不设置字符而选择某个列吗?



[解决办法]
不能,没有这种直接的方法
[解决办法]
自己写代码转换
[解决办法]
可以通过默认视图来转换,
dt.DefaultView.ToTable(false,"列名2");
[解决办法]

C# code
private static void DemonstrateDataView(){    // Create a DataTable with three columns.    DataTable table = new DataTable("NewTable");    Console.WriteLine("Original table name: " + table.TableName);    DataColumn column = new DataColumn("ID", typeof(System.Int32));    table.Columns.Add(column);    column = new DataColumn("Category", typeof(System.String));    table.Columns.Add(column);    column = new DataColumn("Product", typeof(System.String));    table.Columns.Add(column);    column = new DataColumn("QuantityInStock", typeof(System.Int32));    table.Columns.Add(column);    // Add some items.    DataRow row = table.NewRow();    row.ItemArray = new object[] { 1, "Fruit", "Apple", 14 };    table.Rows.Add(row);    row = table.NewRow();    row.ItemArray = new object[] { 2, "Fruit", "Orange", 27 };    table.Rows.Add(row);    row = table.NewRow();    row.ItemArray = new object[] { 3, "Bread", "Muffin", 23 };    table.Rows.Add(row);    row = table.NewRow();    row.ItemArray = new object[] { 4, "Fish", "Salmon", 12 };    table.Rows.Add(row);    row = table.NewRow();    row.ItemArray = new object[] { 5, "Fish", "Salmon", 15 };    table.Rows.Add(row);    row = table.NewRow();    row.ItemArray = new object[] { 6, "Bread", "Croissant", 23};    table.Rows.Add(row);    // Mark all rows as "accepted". Not required    // for this particular example.    table.AcceptChanges();    // Print current table values.    PrintTableOrView(table, "Current Values in Table");    DataView view = new DataView(table);    view.Sort = "Category";    PrintTableOrView(view, "Current Values in View");    DataTable newTable = view.ToTable(true, "Category", "QuantityInStock");    PrintTableOrView(newTable, "Table created from sorted DataView");    Console.WriteLine("New table name: " + newTable.TableName);    Console.WriteLine("Press any key to continue.");    Console.ReadKey();}private static void PrintTableOrView(DataView dv, string label){    System.IO.StringWriter sw;    string output;    DataTable table = dv.Table;    Console.WriteLine(label);    // Loop through each row in the view.    foreach (DataRowView rowView in dv)    {        sw = new System.IO.StringWriter();        // Loop through each column.        foreach (DataColumn col in table.Columns)        {            // Output the value of each column's data.            sw.Write(rowView[col.ColumnName].ToString() + ", ");        }        output = sw.ToString();        // Trim off the trailing ", ", so the output looks correct.        if (output.Length > 2)        {            output = output.Substring(0, output.Length - 2);        }        // Display the row in the console window.        Console.WriteLine(output);    }    Console.WriteLine();}private static void PrintTableOrView(DataTable table, string label){    System.IO.StringWriter sw;    string output;    Console.WriteLine(label);    // Loop through each row in the table.    foreach (DataRow row in table.Rows)    {        sw = new System.IO.StringWriter();        // Loop through each column.        foreach (DataColumn col in table.Columns)        {            // Output the value of each column's data.            sw.Write(row[col].ToString() + ", ");        }        output = sw.ToString();        // Trim off the trailing ", ", so the output looks correct.        if (output.Length > 2)        {            output = output.Substring(0, output.Length - 2);        }        // Display the row in the console window.        Console.WriteLine(output);    } //    Console.WriteLine();} 该示例在控制台窗口中显示以下输出:Original table name: NewTableCurrent Values in Table1, Fruit, Apple, 142, Fruit, Orange, 273, Bread, Muffin, 234, Fish, Salmon, 125, Fish, Salmon, 156, Bread, Croissant, 23Current Values in View3, Bread, Muffin, 236, Bread, Croissant, 234, Fish, Salmon, 125, Fish, Salmon, 151, Fruit, Apple, 142, Fruit, Orange, 27Table created from sorted DataViewBread, 23Fish, 12Fish, 15Fruit, 14Fruit, 27New table name: NewTable 


[解决办法]
dt.DefaultView.ToTable(false,"列名");

热点排行