问个C#排序有关问题 要求同时正向逆向插入数据
问个C#排序问题 要求同时正向逆向插入数据
已知有两张表
主表:

子表:

需要将子表中的一列同向逆向分别写入主表,也就是说子表第一条数据插入主表正数第一行,子表第二条数据插入主表最后一行,子表第三行数据插入主表正数第二行....
最后的效果如下:

我用的DataTable,不一定需要代码有一个思路也行
谢谢
------解决思路----------------------
既然改来改去都改不好,那就应该写成傻瓜化的程序。通过两趟处理,每一趟都只是用一个傻瓜化的方式处理,来简化你的思路。
为了少写两行而代码而翻来复去纠结诡异的计算“公式”,是得不偿失的。
------解决思路----------------------
已知有两张表
主表:
子表:
需要将子表中的一列同向逆向分别写入主表,也就是说子表第一条数据插入主表正数第一行,子表第二条数据插入主表最后一行,子表第三行数据插入主表正数第二行....
最后的效果如下:
我用的DataTable,不一定需要代码有一个思路也行
谢谢
------解决思路----------------------
if (主表.Rows.Count < 子表.Rows.Count)
throw new Exception("主表太短不够写。");
for (int i = 0, j = 0; i < 子表.Rows.Count; i += 2, j++)
{
把子表的那玩意儿写到主表(i, j, 主表, 子表);
}
for (int i = 1, j = 主表.Rows.Count - 1; i < 子表.Rows.Count; i += 2, j--)
{
把子表的那玩意儿写到主表(i, j, 主表, 子表);
}
既然改来改去都改不好,那就应该写成傻瓜化的程序。通过两趟处理,每一趟都只是用一个傻瓜化的方式处理,来简化你的思路。
为了少写两行而代码而翻来复去纠结诡异的计算“公式”,是得不偿失的。
------解决思路----------------------
for (var i = 0; i < mfTable.Rows.Count; i += 2)
{
//将dt2.Rows[i]的数据更新到dt1第i/2条数据
if (string.IsNullOrEmpty(dtBase.Rows[i / 2][3].ToString()))
{
dtBase.Rows[i / 2][3] = mfTable.Rows[i][2];
}
else
{
dtBase.Rows[i / 2][4] = mfTable.Rows[i][2];
}
if (i < mfTable.Rows.Count - 1)
{
//dt2.Rows[i]的数据更新到dt1第dt1.Rows.Count-1-i/2条数据
if (string.IsNullOrEmpty(dtBase.Rows[dtBase.Rows.Count - 1 - i / 2][3].ToString()))
{
dtBase.Rows[dtBase.Rows.Count - 1 - i / 2][3] = mfTable.Rows[i][2];
}
else
{
dtBase.Rows[dtBase.Rows.Count - 1 - i / 2][4] = mfTable.Rows[i][2];
}
}
}