DataTable用法
一、表格的数据过滤,但是不改变表格列的结构
1)
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
int rowCount1 = 4;
for (int i = 0; i < rowCount1; i )
{
DataRow dataRow = dt.Rows.Add();
if (i == 0)
{
dataRow[0] = "小王";//可以使用索引来访问行
dataRow["年龄"] = i.ToString();//可以使用列名来访问行
}
else
{
dataRow[0] = "小李";
dataRow["年龄"] = i.ToString();
}
}
DataTable dt2 = dt.Select("年龄>1").CopyToDataTable(); //对行进行操作,如果不是字符串则不用单引号,CopyToDataTable()是将datarow[]转成了表格。
DataTable dt3 = dt.Select("姓名='小李'","年龄 desc").CopyToDataTable();//对行进行操作,并且,第二个参数是对列进行排序,desc是降序,asc是升序
DataTable dt4 = dt.Select("姓名='小李'", "年龄 desc",DataViewRowState.Added ).CopyToDataTable();//对行进行操作,并且指定被操作的行的类型
DataRow [] DR = dt.Select("姓名='小李'", "年龄 desc");
dataGridView1.DataSource = dt;
dataGridView2.DataSource = dt2;
dataGridView3.DataSource = dt3;
dataGridView4.DataSource = dt4;
2)获取满足某个条件的某个单元格的值
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
int rowCount1 = 4;
for (int i = 0; i < rowCount1; i )
{
DataRow dataRow = dt.Rows.Add();
if (i == 0)
{
dataRow[0] = "小王";//可以使用索引来访问行
dataRow["年龄"] = i.ToString();//可以使用列名来访问行
}
else
{
dataRow[0] = "小李";
dataRow["年龄"] = i.ToString();
}
}
var nameVal = dt.AsEnumerable().FirstOrDefault(item => item.Field<string>("姓名") == "小李").Field<string>("年龄");//先获取满足某个条件的某一行,然后再次根据列名筛选出某一个单元格的值
Console.WriteLine(nameVal);
二、表格的数据过滤,但是改变表格列的结构
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
int rowCount1 = 4;
for (int i = 0; i < rowCount1; i )
{
DataRow dataRow = dt.Rows.Add();
if (i == 0)
{
dataRow[0] = "小王";//可以使用索引来访问行
dataRow["年龄"] = i.ToString();//可以使用列名来访问行
}
else
{
dataRow[0] = "小李";
dataRow["年龄"] = i.ToString();
}
}
dataGridView1.DataSource = dt.DefaultView.ToTable(false, new string[] { "姓名" });
dataGridView5.DataSource = dt.DefaultView.ToTable(true, new string[] { "姓名" });
dataGridView2.DataSource = dt.DefaultView.ToTable(false, new string[] { "姓名", "年龄" });
dataGridView4.DataSource = dt.DefaultView.ToTable(false, new string[] { "年龄", "姓名" });
dataGridView3.DataSource = dt.DefaultView.ToTable(false, new string[] { "年龄" });
从上图可以看出,通过以上操作可以调换列的左右排列顺序,或者减少列的个数,或者对列的元素进行去重操作。
三、行状态的监控
DataTable dataTable = new DataTable("dataTable");
DataColumn dataColumn = new DataColumn("dataColumn");
dataTable.Columns.Add(dataColumn);
// Add ten rows.
DataRow dataRow;
dataRow = null;
for (int i = 0; i < 3; i )
{
dataRow = dataTable.NewRow();
dataRow["dataColumn"] = "item " i;
Console.WriteLine(dataRow.RowState);
dataTable.Rows.Add(dataRow);//添加行
}
PrintRowState(dataTable);
dataTable.AcceptChanges();
PrintRowState(dataTable);
dataTable.Rows[0][dataColumn] = "hello";
PrintRowState(dataTable);
/// <summary>
/// 输出行状态
/// </summary>
/// <param name="dataTable"></param>
private void PrintRowState(DataTable dataTable)
{
int rows = dataTable.Rows.Count;
for (int i = 0; i < rows; i )
{
DataRow dataRow = dataTable.Rows[i];
Console.WriteLine(dataRow.RowState);
}
}
输出:
Detached//行被创建但是没有添加到表格中
Detached
Detached
Added//行被添加到表格中,但是之后没有调用AcceptChanges方法
Added
Added
Unchanged//行调用AcceptChanges方法之后,尚未更改行的值
Unchanged
Unchanged
Modified//更改行的值,但是之后没有调用用AcceptChanges
Unchanged
Unchanged
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghfacb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13