拆分函数
/// <summary>
/// 拆分DataTable
/// </summary>
private DataTable SplitDataTable(DataTable sourceTable)
{
if (sourceTable == null || sourceTable.Rows.Count == 0)
{
return sourceTable;
}
DataTable dataTable = sourceTable.Clone();
try
{
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
dataTable.Rows.Add(sourceTable.Rows[i].ItemArray);
dataTable.Rows.Add(sourceTable.Rows[i].ItemArray);
}
for (int i = 0; i < dataTable.Rows.Count; i++)
{
bool isOdd = false;
if ((i + 1) % 2 == 1)
{
isOdd = true;
}
for (int j = 0; j < dataTable.Rows[i].ItemArray.Length; j++)
{
if (isOdd)
{
string pre = dataTable.Rows[i].ItemArray[j].ToString().Substring(0, 1);
dataTable.Rows[i][j] = pre;
}
else
{
string next = dataTable.Rows[i].ItemArray[j].ToString().Substring(1, 1);
dataTable.Rows[i][j] = next;
}
}
isOdd = false;
}
}
catch (Exception ex)
{
}
return dataTable;
}
//业务处理函数
// ... ...
//合并函数
/// <summary>
/// 合并DataTable
/// </summary>
private DataTable MergeDataTable(DataTable sourceTable)
{
if (sourceTable == null || sourceTable.Rows.Count == 0)
{
return sourceTable;
}
DataTable newDataTable1 = sourceTable.Clone();
try
{
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if ((i + 1) % 2 == 1)
{
newDataTable1.Rows.Add(sourceTable.Rows[i].ItemArray);
}
}
for (int i = 0; i < sourceTable.Rows.Count; i++)
{
if (((i + 1)) % 2 == 0)
{
for (int k = 0; k < sourceTable.Rows[i].ItemArray.Length; k++)
{
string next = sourceTable.Rows[i].ItemArray[k].ToString();
newDataTable1.Rows[i / 2][k] = newDataTable1.Rows[i / 2][k].ToString() + next;
}
}
}
}
catch (Exception ex)
{
}
return newDataTable1;
}
//测试
static DataTable GetDataTable()
{
//五行五列DataTable,作为待测试DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("dvalue1"));
dataTable.Columns.Add(new DataColumn("dvalue2"));
dataTable.Columns.Add(new DataColumn("dvalue3"));
dataTable.Columns.Add(new DataColumn("dvalue4"));
dataTable.Columns.Add(new DataColumn("dvalue5"));
dataTable.Rows.Add(new object[] { "AA", "AB", "AC", "AD", "??" });
dataTable.Rows.Add(new object[] { "BA", "BB", "BC", "BD", "??" });
dataTable.Rows.Add(new object[] { "CA", "CD", "DA", "DB", "??" });
dataTable.Rows.Add(new object[] { "DC", "DD", "CC", "AD", "??" });
dataTable.Rows.Add(new object[] { "AA", "BB", "CC", "DD", "??" });
return dataTable;
}
DataTable dataTable = GetDataTable();
//输出结果
源数据表格式:
AA AB AC AD ??
BA BB BC BD ??
CA CD DA DB ??
DC DD CC AD ??
AA BB CC DD ??
拆分完成后的数据表格式:
A A A A ?
A B C D ?
B B B B ?
A B C D ?
C C D D ?
A D A B ?
D D C A ?
C D C D ?
A B C D ?
A B C D ?
//合并完成后的数据表格式:
AA AB AC AD ??
BA BB BC BD ??
CA CD DA DB ??
DC DD CC AD ??
AA BB CC DD ??