Вертикальное и горизонтальное направление объекта DataTable


Я хотел бы иметь таблицу с ячейками в направлении, сверху вниз или снизу вверх и слева направо или справа налево.

ЛР - слева направо РЛ - справа налево БТ - снизу вверх ТБ - сверху вниз

Чтобы сделать это, ниже приведен метод, который я создал

    internal DataTable GetContainerLocationMap(int row, int column, string bayCode, string horizontalDirection, string verticalDirection)
    {
        var pageMap = new DataTable();

        if (horizontalDirection == "LR")
        {
            for (int i = 1; i <= column; i++)
            {
                pageMap.Columns.Add("C" + i);
            }
            if (verticalDirection == "BT")
            {
                for (int i = row; i > 0; --i)
                {
                    var _pageMapRow = pageMap.NewRow();
                    for (int j = 1; j <= column; j++)
                    {
                        _pageMapRow["C" + j] = string.Format("{0}-{1}-{2}", bayCode, j, i);
                    }
                    pageMap.Rows.Add(_pageMapRow);
                }
            }
            else if (verticalDirection == "TB")
            {
                for (int i = 1; i <= row; i++)
                {
                    var _pageMapRow = pageMap.NewRow();
                    for (int j = 1; j <= column; j++)
                    {
                        _pageMapRow["C" + j] = string.Format("{0}-{1}-{2}", bayCode, j, i);
                    }
                    pageMap.Rows.Add(_pageMapRow);
                }
            }
        }
        else if (horizontalDirection == "RL")
        {
            for (int i = column; i > 0; --i)
            {
                pageMap.Columns.Add("C" + i);
            }
            if (verticalDirection == "BT")
            {
                for (int i = row; i > 0; --i)
                {
                    var _pageMapRow = pageMap.NewRow();
                    for (int j = column; j > 0; --j)
                    {
                        _pageMapRow["C" + j] = string.Format("{0}-{1}-{2}", bayCode, j, i);
                    }
                    pageMap.Rows.Add(_pageMapRow);
                }
            }
            else if (verticalDirection == "TB")
            {
                for (int i = 1; i <= row; i++)
                {
                    var _pageMapRow = pageMap.NewRow();
                    for (int j = column; j > 0; --j)
                    {
                        _pageMapRow["C" + j] = string.Format("{0}-{1}-{2}", bayCode, j, i);
                    }
                    pageMap.Rows.Add(_pageMapRow);
                }
            }
        }

        return pageMap;
    }

Если вы вызываете метод, описанный выше эти параметры

GetContainerLocationMap(2, 5, "A", "LR", "TB");

Он будет возвращать объект DataTable, как показано ниже:

A-1-1   A-2-1   A-3-1   A-4-1   A-5-1
A-1-2   A-2-2   A-3-2   A-4-2   A-5-2

Хотелось бы узнать код, который я написал-это все нормально или мне нужно сделать ее более простой?

Спасибо заранее



254
1
задан 27 февраля 2018 в 09:02 Источник Поделиться
Комментарии