MR.alaa Ответов: 1

Как преобразовать список в datatable C#


я получаю все данные в списке каждый раз, когда я делаю цикл и получаю их в список, как я могу передать их в таблицу данных, где все строки списка имеют только один столбец и разные значения ?? я пытаюсь преобразовать их в словарь и передать в таблицу данных, но у меня есть ошибка получения дубликата столбца ?? это мой код

Что я уже пробовал:

List<string> list = new List<string>();
                       if (pagevalue != null)
                       {


                           foreach (HtmlNode data in pagevalue.DocumentNode.SelectNodes("//div"))
                           {
                                 list.Add(infodata.InnerText);
                           }

                           if (list.Count > 0)
                           {

                               var dict = list.ToDictionary(k => k, v => v);

                               foreach (KeyValuePair<string, string> item in dict)
                               {
                                   DataRow dataRow = dt.NewRow();
                                   dt.Columns.Add(item.Key);
                               }

                               DataSet ds = new DataSet();
                               ds.Tables.Add(dt);
                           }

1 Ответов

Рейтинг:
2

Peter Leow

Зачем вам нужен словарь? Попробуйте это и адаптируйтесь:

List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
DataTable table = new DataTable();
table.Columns.Add("column1", typeof (string));
foreach (string str in cities)
{
	DataRow row = table.NewRow();
	row["column1"] = str;
	table.Rows.Add(row);
}


MR.alaa

то же самое он строит один столбец (мне он нужен в строке, а не в столбце ) каждый раз и удаляет старый, а не добавляет У меня есть количество строк, которые нужно получить все в конце цикла с одинаковыми именами столбцов спасибо за помощь

Peter Leow

Вы имеете в виду, что datatable будет иметь только одну строку с несколькими столбцами? В любом случае, вы можете добавить столбцы и строки в datatable. Проверьте это: https://www.dotnetperls.com/datatable

MR.alaa

если (список.Граф > 0)
{



DataTable table = новый DataTable();

foreach (строка ColumnN в списке)
{
стол.Столбцы.Add (ColumnN, typeof(string));
}

(ул. строкой по каждому элементу в списке)
{
DataRow row = таблица.Невров();
row[ColumnN] = str;
стол.Строк.Добавить(строка);
}

DataSet ds = новый набор данных();
ДС.Таблицы.Добавить (таблица);
}

я получаю ошибку row[ColumnN] = str; как я могу сделать это правильно и как я могу сделать имя столбца объявленным только один раз ?? чтобы не быть сделанным в каждой петле ?

epdoce

foreach (строка ColumnN в списке)
{
стол.Столбцы.Add (ColumnN, typeof(string));
}
это неправильно...
Как видите, вы использовали цикл для создания столбцов в таблице, используя элементы списка в качестве имени столбца. Тогда в вашем следующем цикле столбец "ColumnN" неизвестен... ваша строка будет вне индекса

Peter Leow

Чего вы пытаетесь достичь? Вы добавляете столбцы с помощью элементов списка, а затем снова пытаетесь добавить строку с помощью элементов списка? И похоже, что каждая строка будет иметь столбец, заполненный именем столбца. И вообще, что это columnN внутри строки стр[columnN]=, ты имеешь в виду строку[стр]=стр? К сожалению, вы не посетили ссылку, которую я вам дал https://www.dotnetperls.com/datatable