DataColumn в список (тот же тип данных)

1

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

Пример:

  static List<T> ColumnValuesToList<T>(DataTable dt,out string typeName)
         {
             typeName = dt.Columns[0].DataType.ToString();
             List<T> list = new List<T>();
             foreach (DataRow row in dt.Rows)
             {
              // var value = row[0];
              //list.Add(value);
                list.Add(row[0]);
             }
             return list;
        }

Вызов:

    List<int> myList = ColumnValuesToList(myDtWithInts,typeInfo);
    List<string> myList = ColumnValuesToList(myDtWithStrings,typeInfo);
Теги:
list

1 ответ

1
Лучший ответ

Вы почти там, вам просто нужно получить значение из DataRow в нужном типе. То есть, вы можете бросить:

list.Add((T)row[0]);

или (что я бы предпочел), используйте метод расширения Field<T>, который имеет преимущество в правильной работе с типами NULL (DBNull.Value автоматически преобразуется в null):

list.Add(row.Field<T>(0));

Однако, используя LINQ, вам действительно не нужно реализовывать это самостоятельно:

List<int> myList = myDtWithInts.AsEnumerable()
                   .Select(drow => drow.Field<int>(0)).ToList();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню