Как проверить имя столбца уже состоит в таблице - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть следующие две таблицы данных:

Таблица [2]

+----+-----------+----------+
| id | FirstName | LastName |
+----+-----------+----------+
| 10 | Fred      | Ramirez  |
+----+-----------+----------+
| 20 | Willie    | James    |
+----+-----------+----------+
| 30 | Daniel    | Green    |
+----+-----------+----------+
| 40 | Matthew   | Walker   |
+----+-----------+----------+
| 50 | Aaron     | Wright   |
+----+-----------+----------+
| 60 | Richard   | Huey     |
+----+-----------+----------+
| 80 | Matthew   | Walker   |
+----+-----------+----------+

и

Таблица [3]

+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| Services | Fred ---10--- | Willie ---20--- | Daniel  ---30--- | Matthew  ---40--- | Aaron  ---50--- | Richard  ---60--- | Matthew  ---80--- |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| XXX      | 0             | 0               | 0                | 0                 | 0               | 0                 | 0                 |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| AAA      | 0             | 0               | 0                | 0                 | 0               | 0                 | 0                 |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| CCC      | 0             | 0               | 0                | 0                 | 0               | 0                 | 0                 |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| DDD      | 0             | 0               | 0                | 0                 | 0               | 0                 | 0                 |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+
| YYY      | 0             | 0               | 0                | 0                 | 0               | 0                 | 0                 |
+----------+---------------+-----------------+------------------+-------------------+-----------------+-------------------+-------------------+

Мне нужно получить LastName из Table[2] и назначить имя столбца как FirstName + LastName

Мой код выглядит следующим образом:

int userID = 0;
string[] columnNameParts;
Result.GridViewDataTable = ds.Tables[3];
for (int currCol = 1; currCol < Result.GridViewDataTable.Columns.Count; currCol++)
{
    columnNameParts = Result.GridViewDataTable.Columns[currCol].ColumnName.Split(new string[] { "---" }, StringSplitOptions.RemoveEmptyEntries);
    userID = int.Parse(columnNameParts[columnNameParts.Length - 1]);


    string columnName = ds.Tables[2].Select("Id = " + userID)[0]["FirstName"].ToString() + " " +
                                                           ds.Tables[2].Select("Id = " + userID)[0]["LastName"].ToString().Substring(0, 1);

    Result.GridViewDataTable.Columns[currCol].ColumnName = columnName;

}

С данными двух приведенных выше таблиц я получаю следующую ошибку.

A column named 'Matthew W' already belongs to this DataTable

Это происходит из-за того, что Datatable имеет эту (Matthew | Walker) запись два раза.

Как только я задаю имя столбца с помощью этого кода,

string columnName = ds.Tables[2].Select("Id = " + userID)[0]["FirstName"].ToString() + " " +
                                                           ds.Tables[2].Select("Id = " + userID)[0]["LastName"].ToString().Substring(0, 1);

Мне нужно проверить, Datatable уже состоит из этого имени столбца, и если оно уже существует, мне нужно установить 1 для завершения из LastName. Если одно и то же имя столбца состоит из нескольких раз, мне нужно добавить 1,2,3 аналогично конец Фамилии Как пример (Matthew W,Matthew W1,Matthew W2,) - как я могу это сделать?

1 Ответ

1 голос
/ 17 февраля 2020

Чтобы проверить существующий столбец, это должно работать для вас.

Result.GridViewDataTable.Columns.Contains(tmpColumnName)

Затем, если вам нужно число после columnName, вы просто ставите index после него. Кстати, этот фрагмент не самое лучшее решение, но я надеюсь, что оно даст вам представление о том, как его решить. Надеюсь, это поможет.

int userID = 0;
string[] columnNameParts;
Result.GridViewDataTable = ds.Tables[3];
for (int currCol = 1; currCol < Result.GridViewDataTable.Columns.Count; currCol++)
{
    columnNameParts = Result.GridViewDataTable.Columns[currCol].ColumnName.Split(new string[] { "---" }, StringSplitOptions.RemoveEmptyEntries);
    userID = int.Parse(columnNameParts[columnNameParts.Length - 1]);

    string columnName = ds.Tables[2].Select("Id = " + userID)[0]["FirstName"].ToString()
        + " "
        + ds.Tables[2].Select("Id = " + userID)[0]["LastName"].ToString().Substring(0, 1);

    //index
    int n = 0;
    //Create new temporary columnName which will add to the Columns later 
    string tmpColumnName = columnName;
    //Check if column name is duplicate.
    while (Result.GridViewDataTable.Columns.Contains(tmpColumnName))
    {
        //Add 1 to index
        n++;
        //Create new name such as Matthew W1,Matthew W2,Daniel G1,Matthew W3,...
        tmpColumnName = columnName + n.ToString();
    }
    //Add new unique column name to Columns
    Result.GridViewDataTable.Columns[currCol].ColumnName = columnName;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...