110,534
社区成员
发帖
与我相关
我的任务
分享
public DataTable TableSort(DataTable table, string table_field)
{
List<string> alreadyAdd = new List<string>();
List<string> AllColName = new List<string>();
string SortString = string.Empty;
//结构
DataTable resultTable = new DataTable();
string[] sortList = table_field.Split(',');
foreach (string strf in sortList)
{
foreach (DataColumn tmcol in table.Columns)
{
string oldcolname = tmcol.ColumnName.Trim();
//string lastchar = oldcolname.Substring(oldcolname.Length - 1, 1);
string lastchar = oldcolname.Substring(oldcolname.IndexOf(")")+1);
if (lastchar == strf.Trim())
{
//resultTable.Columns.Add(tmcol);
resultTable.Columns.Add(oldcolname);
alreadyAdd.Add(oldcolname);
SortString += oldcolname + " asc,";
break;
}
}
}
foreach (DataColumn tmcol in table.Columns)
{
string oldcolname = tmcol.ColumnName.Trim();
AllColName.Add(oldcolname);
if (alreadyAdd.IndexOf(oldcolname) < 0)
{
//resultTable.Columns.Add(tmcol);
resultTable.Columns.Add(oldcolname);
}
}
//数据
foreach (DataRow tmdr in table.Rows)
{
DataRow addrow = resultTable.NewRow();
foreach (string tmcol in AllColName)
{
addrow[tmcol] = tmdr[tmcol];
}
resultTable.Rows.Add(addrow);
}
//排序
if (SortString.Length > 0)
{
resultTable.DefaultView.Sort = SortString.Remove(SortString.Length - 1, 1);
}
return resultTable;
}
private DataTable Sort(DataTable table,string table_field)
{
string[] strField;
strField=table_field.Split(',');
ArrayList alCol=new ArrayList();
//找到table中列名是strField中字段的列的序号
for(int i=0;i<strField.Length;i++)
{
for(int j=0;j<table.Columns.Count;j++)
{
if(strField[i]==table.Columns[j].ColumnName.ToString())
{
alCol.Add(j);//存储了table中对应field字段的列序号
break;
}
}
}
//准备交换
DataTable dtAfterChange=table.Copy();
for(int i=0;i<strField.Length;i++)
{
//序号不相等的才交换
if(Convert.ToInt32(alCol[i])!=i)
{
int t=Convert.ToInt32(alCol[i]);//把得到的对应传入field字段在原表中的序号赋给t
for(int j=0;j<table.Rows.Count;j++)
{
string strTemp=table.Rows[j][t].ToString().Trim();
dtAfterChange.Rows[j][i]=strTemp;
}
}
}
return dtAfterChange;
public DataTable TableSort(DataTable table, string table_field)
{
List<string> alreadyAdd = new List<string>();
List<string> AllColName = new List<string>();
string SortString = string.Empty;
//结构
DataTable resultTable = new DataTable();
string[] sortList = table_field.Split(',');
foreach (string strf in sortList)
{
foreach (DataColumn tmcol in table.Columns)
{
string oldcolname = tmcol.ColumnName.Trim();
string lastchar = oldcolname.Substring(oldcolname.Length - 1, 1);
if (lastchar == strf.Trim())
{
resultTable.Columns.Add(tmcol);
alreadyAdd.Add(oldcolname);
SortString += oldcolname + " asc,";
}
}
}
foreach (DataColumn tmcol in table.Columns)
{
string oldcolname = tmcol.ColumnName.Trim();
AllColName.Add(oldcolname);
if (alreadyAdd.IndexOf(oldcolname) < 0)
{
resultTable.Columns.Add(tmcol);
}
}
//数据
foreach (DataRow tmdr in table.Rows)
{
DataRow addrow = resultTable.NewRow();
foreach(string tmcol in AllColName)
{
addrow[tmcol] = tmdr[tmcol];
}
resultTable.Rows.Add(addrow);
}
//排序
if (SortString.Length > 0)
{
resultTable.DefaultView.Sort = SortString.Remove(SortString.Length - 1, 1);
}
return resultTable;
}