Как добавить столбец в наборе данных со значением переменной (int) для каждой строки - PullRequest
0 голосов
/ 14 января 2019

У меня есть набор данных, который я получаю из базы данных MySQL, используя метод из моей службы WCF. Этот набор данных содержит список проектов в моей базе данных. Это список проектов, отображаемых так:

ID | Имя

1 | Тост

(это пример)

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

ID | Имя | Состояние

1 | Тост | 1

У меня есть другой метод, который возвращает int. Для параметров этот метод принимает идентификатор проекта. Например, идентификатор Toast равен 1. Поэтому я ввожу свой метод с параметром 1. Вы понимаете, что я имею в виду?

Итак, у меня есть набор данных, который содержит это:

ID | Имя

1 | Тост

и int, который содержит это: 1

Итак, я хочу добавить новую строку на основе идентификатора проекта. Имейте в виду, что у меня может быть МНОГИЕ другие проекты, поэтому мне нужно проверить любую строку.

Я не знаю, как поступить ... Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 14 января 2019

Уже ответили здесь:

Добавление нового столбца и данных в таблицу данных, которая уже содержит данные - c #

DataTable dt = sql.ExecuteDataTable("sp_MyProc");    
dt.Columns.Add("Status", typeof(System.Int32));    
foreach(DataRow row in dt.Rows)
    row["Status"] = GetStatus(row["ID"]);   

Полный пример

void Main()
{   
    //setup 
    DataSet projects = new DataSet("ProjectsDataSet");
    projects.Tables.Add(new DataTable("ProjectsTable"));

    DataTable ProjectsDataTable = projects.Tables["ProjectsTable"]; 

    ProjectsDataTable.Columns.Add("id", typeof(Int32));
    ProjectsDataTable.Columns.Add("name", typeof(string));

    var row1 = ProjectsDataTable.NewRow();
    row1["id"] = 1;
    row1["name"] = "some project name";
    ProjectsDataTable.Rows.Add(row1);

    //you are here

    //add a column
    ProjectsDataTable.Columns.Add("status", typeof(Int32));

    //populate column
    foreach (DataRow row in ProjectsDataTable.Rows) {
        row["status"] = 123;        
    }

    projects.Dump(); // shows result, only works in linqpad 
}
...