一、新建数据表及数据的添加
DataTable dt = new DataTable();
dt.Columns.Add(column,Type.GetType("数据类型"));——如:System.String()
dt.Rows.Add(数据);
二、排序
1 获取DataTable的默认视图
2 对视图设置排序表达式
3 用排序后的视图导出的新DataTable替换就DataTable
(Asc升序可省略,多列排序用","隔开)
DataView dv = dt.DefaultView;
dv.Sort = "id Asc,name Desc";
dt = dv.ToTable();
三、检索
1 设置查询字符串
2 使用Select方法获取到所有满足条件的数据行对象数组
(多项查询条件间,用and隔开.模糊查询使用 like %)
DataRow[] matches = dt.Select("(id<'003') and (name='名字11') and (number like '%2007%')");
string strName = matches[0]["name"].ToString();
四、合并
假定有2个DataTable:Dt1 , Dt2。表结构一样
将Dt2接在Dt1后可采用此方法
dt1.Merge(dt2);
或:
DataTable dtAll = dt1.Clone();
object[] obj = new object[dtAll.Columns.Count];
for (int i = 0; i < dt1.Rows.Count; i++)
{
dt1.Rows[i].ItemArray.CopyTo(obj,0);
dtAll.Rows.Add(obj);
}
for (int i = 0; i < dt2.Rows.Count; i++)
{
dt2.Rows[i].ItemArray.CopyTo(obj,0);
dtAll.Rows.Add(obj);
}
五、分页
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.DataSource = dvIntegralExpense;
pds.AllowPaging = true;
pds.PageSize = pager.PageSize;
pds.CurrentPageIndex = pager.PageIndex;
rptIntegralExpense.DataSource = pds;
rptIntegralExpense.DataBind();
六、去除重复的行
public DataTable SelectDistinct(string[] pColumnNames, DataTable pOriginalTable)
{
DataTable distinctTable = new DataTable();
int numColumns = pColumnNames.Length;
for (int i = 0; i < numColumns; i++)
{
distinctTable.Columns.Add(pColumnNames[i], pOriginalTable.Columns[pColumnNames[i]].DataType);
}
ArrayList currentArray = new ArrayList();
foreach (DataRow currentRow in pOriginalTable.Rows)
{
DataRow newRow = distinctTable.NewRow();
if (!currentArray.Contains(currentRow["Title"].ToString()))
{
currentArray.Add(currentRow["Title"].ToString());
for (int i = 0; i < numColumns; i++)
{
newRow[pColumnNames[i]] = currentRow[pColumnNames[i]];
}
distinctTable.Rows.Add(newRow);
}
}
return distinctTable;
}