问个C#排序有关问题 要求同时正向逆向插入数据

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

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

最后的效果如下:
问个C#排序有关问题 要求同时正向逆向插入数据


​我用的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];
                    }
                }
            }