如何过滤掉DataTable中的指定列/字段

dfpgb 2010-06-09 02:39:52
假设现在有一个DataTable包含10个列/字段,10万行.

如果快速得到一个新的DataTable只包含其中的指定列/字段呢?
...全文
569 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞扬人生 2010-06-09
  • 打赏
  • 举报
回复
粘个例子,哈哈哈

private void GetRowsByFilter()
{
DataTable table = DataSet1.Tables["Orders"];

// Presuming the DataTable has a column named Date.
string expression = "Date > '1/1/00'";

// Sort descending by column named CompanyName.
string sortOrder = "CompanyName DESC";
DataRow[] foundRows;

// Use the Select method to find all rows matching the filter.
foundRows = table.Select(expression, sortOrder);

// Print column 0 of each returned row.
for(int i = 0; i < foundRows.Length; i ++)
{
Console.WriteLine(foundRows[i][0]);
}
}

lude8880 2010-06-09
  • 打赏
  • 举报
回复
不要用*,需要哪列选哪里额。
飞扬人生 2010-06-09
  • 打赏
  • 举报
回复
方法太多了。不过记得datatable 有个select的方法


koukoujiayi 2010-06-09
  • 打赏
  • 举报
回复
6楼有点误!
再创建一个dt2,如:
DataTable dt2=dt.Copy();
对dt2进行操作!!
捷哥1999 2010-06-09
  • 打赏
  • 举报
回复
注意Copy方法是创建跟原表一样的结构,然后你可以对它的列进行增删改。
army369168520 2010-06-09
  • 打赏
  • 举报
回复
1 string sql="select 字段1,字段2 from 表名 ";
根据要显示的哪些字段就添加上去这是其中的第一种
2 可以用绑定CheckBox 隐藏自己不想看的字段

捷哥1999 2010-06-09
  • 打赏
  • 举报
回复
使用DataTable.Copy()生成新的DataTable,然后进行处理

另外一个就是我说的,创建该表的视图:

private void BindDataGrid()
{
DataTable table = new DataTable();

// Insert code to populate a DataTable with data.

// Bind grid to DataTable.
dataGrid1.DataSource = table;
}

private void ChangeRowFilter()
{
DataTable gridTable = (DataTable) dataGrid1.DataSource;

// Set the RowFilter to display a company names that
// begin with A through I..
gridTable.DefaultView.RowFilter = "CompanyName < 'I'";
}
koukoujiayi 2010-06-09
  • 打赏
  • 举报
回复
再创建一个dt2,如:
DataTable dt2 = dt;
对dt2进行操作!!
捷哥1999 2010-06-09
  • 打赏
  • 举报
回复
如果只是要显示,那么可以用DataView得到原DataTable的视图。
dfpgb 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]
C# code

dt.Columns.Remove( "列名称 ");
dt.Columns.RemoveAt(列索引);
[/Quote]
这样没有得到新的dt啊,原来的dt不能变
q107770540 2010-06-09
  • 打赏
  • 举报
回复

dt.Columns.Remove( "列名称 ");
dt.Columns.RemoveAt(列索引);



宝_爸 2010-06-09
  • 打赏
  • 举报
回复
例如

修改红色的部分进行过滤

SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROm Categories",myConnection);

DataSet ds = new DataSet();

ad.Fill(ds,"Categories");

DataGrid1.DataSource = ds;

DataGrid1.DataBind();

宝_爸 2010-06-09
  • 打赏
  • 举报
回复
在Fill dataset的时候调用的Stored Procedure中过滤好一点吧。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧