ahmed_sa Ответов: 2

Как преобразовать список в datatable с помощью метода расширения


Проблема

параметр рассогласования ошибка считать, когда преобразовать список в DataTable

мой список, как показано ниже
мой список вывода itemcode, как показано ниже "1830","950","902","540"

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

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

static List<string> SimilarItems = new List<string>();
Similar = ConvertToString(dt.Rows[i]["ItemCode"]);
                    SimilarItems.Add(Similar);
dtcollectlistdata = Extensions.ToDataTable(SimilarItems);

public static DataTable ToDataTable<T>(List<T> items)
    {

        DataTable dataTable = new DataTable(typeof(T).Name);

        //Get all the properties

        PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
       
        foreach (PropertyInfo prop in Props)
        {

            //Setting column names as Property names

            dataTable.Columns.Add(prop.Name);

        }

        foreach (T item in items)
        {

            var values = new object[Props.Length];

            for (int i = 0; i < Props.Length; i++)
            {

                //inserting property values to datatable rows

                values[i] = Props[i].GetValue(item, null);

            }

            dataTable.Rows.Add(values);

        }
        return dataTable;
    }

2 Ответов

Рейтинг:
2

Maciej Los

Ну что ж, я бы очень рекомендовал вам прочитать это: Как реализовать CopyToDataTable<T>, где универсальный тип T не является DataRow | Microsoft Docs[^]

Если ваш список-это просто List<string>, вы можете использовать: объект DataTable.LoadDataRow()[^] + CopyToDataTable()[^] метод.

Видеть:

List<string> mylist = new List<string>() {"1830","950","902","540"};

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("item", typeof(string)));
dt = mylist
	.Select(x=> dt.LoadDataRow(new object[]{x}, false))
	.CopyToDataTable();


Для получения более подробной информации, пожалуйста, смотрите: Создание таблицы данных из запроса (LINQ to DataSet) | Microsoft Docs[^]

Удачи вам!


Рейтинг:
0

OriginalGriff

Взгляните на это: Преобразование списка в таблицу данных[^- это метод, который я использую.


Maciej Los

5ed!