Datatable的Select方法简介
DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是
Select()
Select(stringfilterExpression)
Select(stringfilterExpression,stringsort)
Select(stringfilterExpression,stringsort,DataViewRowStaterecord States)。
1)Select()——获取所有System.Data.DataRow对象的数组。
2)Select(stringfilterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有System.Data.DataRow对象的数组。
3)Select(stringfilterExpression,stringsort)——获取按照指定的排序顺序且与筛选条件相匹配的所有System.Data.DataRow对象的数组。
4)Select(stringfilterExpression,stringsort,DataViewRowStaterecordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow对象的数组。
下面是对这些方法进行演示的示例:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data;
namespaceTestDataTableSelect
{
classProgram
{
staticDataTabledt =newDataTable();
staticvoidMain(string[] args)
{
DataColumndc1 =newDataColumn("id");
dc1.DataType=typeof(int);
DataColumndc2 =newDataColumn("name");
dc2.DataType=typeof(System.String);
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
for(inti = 1; i <=10;i++ )
{
DataRowdr = dt.NewRow();
if(i <= 5)
{
dr[0] = i;
dr[1] = i +"--"+"hello";
}
else
{
dr[0] = i;
dr[1] = i +"--"+"nihao";
}
dt.Rows.Add(dr);
}
Select();
Select("id>='3' and name='3--hello'");//支持and
Select("id>='3' or id='1'");//支持or
Select("name like '%hello%'");//支持like
Select("id>5","id desc");
Select("id>5", "id desc",DataViewRowState.Added);
}
privatestaticvoidSelect()
{
DataRow[] arrayDR = dt.Select();
foreach(DataRowdrinarrayDR)
{
Console.WriteLine(dr[0].ToString()+""+dr[1].ToString());
}
Console.ReadLine();
}
privatestaticvoidSelect(stringfilterExpression)
{
DataRow[] arrayDR = dt.Select(filterExpression);
foreach(DataRowdrinarrayDR)
{
Console.WriteLine(dr[0].ToString() +""+ dr[1].ToString());
}
Console.ReadLine();
}
privatestaticvoidSelect(stringfilterExpression,stringsort)
{
DataRow[] arrayDR = dt.Select(filterExpression,sort);
foreach(DataRowdrinarrayDR)
{
Console.WriteLine(dr[0].ToString() +""+ dr[1].ToString());
}
Console.ReadLine();
}
privatestaticvoidSelect(stringfilterExpression,stringsort,DataViewRowStaterecordStates)
{
DataRow[] arrayDR = dt.Select(filterExpression, sort,recordStates);
foreach(DataRowdrinarrayDR)
{
Console.WriteLine(dr[0].ToString() +""+ dr[1].ToString());
}
Console.ReadLine();
}
}
}
注意事项:上面的Select操作是大小写不敏感的(记录的字段不敏感),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true。
当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到: