之前仅仅知道DataTable是由Row和Column组成,并且,对于DataTable基于行的遍历,每一行都是DataRow,
对从数据库中查询出来的数据,我们将它存入DataTable,
现在我们可以基于DataTable的Select方法再进行一次筛选,
Select()
Select(string filterExpression)
Select(string filterExpression, string sort)
Select(string filterExpression,string sort, DataViewRowState record States)。
1)Select()——获取所有 对象的数组。
2)Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 对象的数组。
3)Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有 对象的数组。
4)Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以 及指定的状态相匹配的所有 对象的数组
using System;
using ;
using ;
using ;
namespace TestDataTableSelect
{
class Program
{
static DataTable dt = new DataTable();
static void Main(string[] args)
{
DataColumn dc1 = new DataColumn("id");
=typeof(int);
DataColumn dc2 = new DataColumn("name");
=typeof();
(dc1);
(dc2);
for (int i = 1; i <=10;i++ )
{
DataRow dr = ();
if (i <= 5)
{
dr[0] = i;
dr[1] = i + "--" + "hello";
}
else
{
dr[0] = i;
dr[1] = i + "--" + "nihao";
}
(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",);
}
private static void Select()
{
DataRow[] arrayDR = ();
foreach(DataRow dr in arrayDR)
{
(dr[0].ToString()+" "+dr[1].ToString());
}
();
}
private static void Select(string filterExpression)
{
DataRow[] arrayDR = (filterExpression);
foreach (DataRow dr in arrayDR)
{
(dr[0].ToString() + " " + dr[1].ToString());
}
();
}
private static void Select(string filterExpression, string sort)
{
DataRow[] arrayDR = (filterExpression,sort);
foreach (DataRow dr in arrayDR)
{
(dr[0].ToString() + " " + dr[1].ToString());
}
();
}
private static void Select(string filterExpression, string sort, DataViewRowState recordStates)
{
DataRow[] arrayDR = (filterExpression, sort,recordStates);
foreach (DataRow dr in arrayDR)
{
(dr[0].ToString() + " " + dr[1].ToString());
}
();
}
}
}
注意事项:上面的Select操作是大小写不敏感的(记录的字段不敏感),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true。
而且:
DataTable的select()方法不支持 != ,要换成<>
DataTable table=GetTable();
("id !=0 ")
解决:
("id <>0 ")