powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Поменять тип данных колонки DataTable
20 сообщений из 20, страница 1 из 1
Поменять тип данных колонки DataTable
    #35853510
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
DataTable dt=new DataTable();
dt.Columns.Add("N", typeof(string));
dt.Columns.Add("Колонка", typeof(string));
Далее dt как-то заполняется.
И в один прекрасный момент хочется изменить тип данных колонки "N" на int.
Естественно, все данные в этой колонке целочисленные.
Как это сделать без использования дополнительных DataTable и без XML и без сиквела?
Фреймворк 2.0
Как-то не нашел соответствующий метод.
Спасибо.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853554
Пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitalyB,

Код: plaintext
1.
DataColumn col = new DataColumn();
col.DataType = typeof(int);

А засем это вообсе делать?
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853571
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Далее, эту DataTable надо подсунуть внешней DLL, которая что-то делает и сохраняет в DBF.
DLL не правится и хозяина нет, она сохраняет в DBF с теми типами полей, которые я передал в DataTable. А поле "N" должно быть int.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853587
Пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitalyB,

кхм... а срузу его сделать интом нельзя? Религия не позволяет?
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853607
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы вынуждаете меня описывать задачу.
Нет, сразу сделать интом нельзя, т.к. первоначально в поле "N" содержаться текстовые значения.
Оператор долго-долго работает и все значения превращаются в целочисленные.
Я, вообще-то хотел узнать, есть ли метод преобразования типов столбцов в DataTable Из одного типа в другой.
Если нет, то буду делать через дополнительную DataTable.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853615
Пгуые123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitalyB,

вот попробуй в набор добавить сразу инт колонку.
По мере работы твоего ОператораПК будешь заполнять твою инт колонку.
А после, перед передачей таблицы в ДЛЛ замочешь ненужный тебе стринг столбец...
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853648
Пгуые007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пгуые123 - опасный человек! Из кого-угодно информацию вытянет!
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853650
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за совет, я знаю как выйти из положения.
Можно Вашим способом, можно скинуть DataTable в типизированный XML, там поменять тип столбца и опять загрузить XML в DataTable, можно создать другую DataTable и перезаписать туда данные и т.д.
Но меня интересует, есть ли метод (типа Columns.Add) на изменение типа данных?
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853690
Corba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Придумал сходу. Сделай метод в котором добавь новый целочисленный столбец к таблице затем в цикле пробегись по всем rows и скопируй из оригинального столбца данные (int.TryParse()). В конце сохрани имя оригинального столбца удали его и переименуй целочисленный столбец. Жуть, конечно, но выполняемо.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35853757
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То же вариант, но я упростил задачу.
Таких столбцов - неизвестное количество.
Но это не беда.
Беда в том, что новая DataTable должна бать полностью аналогична исходной.
Пример:
Я добавляю свою инт колонку и она принимает номер, допустим 7
А колонка "N" имеет номер 3
После удаление "N" и переименования новой колонки в "N" столбец будет иметь номер 6
Это не допустимо.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854054
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitalyBНо меня интересует, есть ли метод (типа Columns.Add) на изменение типа данных?
нет, такого метода нет
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854069
Halfling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitalyBТо же вариант, но я упростил задачу.
Таких столбцов - неизвестное количество.
Но это не беда.
Беда в том, что новая DataTable должна бать полностью аналогична исходной.
Пример:
Я добавляю свою инт колонку и она принимает номер, допустим 7
А колонка "N" имеет номер 3
После удаление "N" и переименования новой колонки в "N" столбец будет иметь номер 6
Это не допустимо.

Обращайся к колонке по имени, а не по номеру.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854080
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HalflingVitalyBТо же вариант, но я упростил задачу.
Таких столбцов - неизвестное количество.
Но это не беда.
Беда в том, что новая DataTable должна бать полностью аналогична исходной.
Пример:
Я добавляю свою инт колонку и она принимает номер, допустим 7
А колонка "N" имеет номер 3
После удаление "N" и переименования новой колонки в "N" столбец будет иметь номер 6
Это не допустимо.

Обращайся к колонке по имени, а не по номеру.

Да мне все равно, как обращаться.
Выше я писал, что DataTable передается в черный ящик (внешняя DLL), которая создает DBF файл.
И порядок столбцов в DBF должен быть как в исходной DataTable.
Это не моя прихоть.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854084
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DataTable dt = new DataTable();
dt.Columns.Add("N", typeof(string));
dt.Columns.Add("Колонка", typeof(string));

dt.Rows.Add("1", "xxx");
dt.Rows.Add("2", "yyy");
dt.Rows.Add("3", "zzz");

var query = from d in dt.AsEnumerable()
            select new {
                N = Convert.ToInt32(d["N"]),
                Колонка = d["Колонка"].ToString(),                        
            };

dt = LinqHelper.ToTable(query);

LinqHelper
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854091
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DataTable dt = new DataTable();
dt.Columns.Add("N", typeof(string));
dt.Columns.Add("Колонка", typeof(string));

dt.Rows.Add("1", "xxx");
dt.Rows.Add("2", "yyy");
dt.Rows.Add("3", "zzz");

var query = from d in dt.AsEnumerable()
            select new {
                N = Convert.ToInt32(d["N"]),
                Колонка = d["Колонка"].ToString(),                        
            };

dt = LinqHelper.ToTable(query);

LinqHelper

Отличный вариант, но в 1 посте я писал FW2.0
Там это не катит.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854096
VitalyB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WYPMAHVitalyBНо меня интересует, есть ли метод (типа Columns.Add) на изменение типа данных?
нет, такого метода нет

Оказывается есть, нашел вариант
dt.Columns["ФФФ"].DataType = System.Type.GetType("System.Int32");
Все отлично, но проблема с Null
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854098
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitalyB
Отличный вариант, но в 1 посте я писал FW2.0
Там это не катит.

Простите, не заметил про FW 2.0

P.S. Либо переходите на FW 3.5 (что, собственно, мешает?), либо создавайте новую колонку в DataTable и в цикле копируйте в нее преобразованное значение поля "N". Всё просто.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35854103
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitalyBWYPMAHVitalyBНо меня интересует, есть ли метод (типа Columns.Add) на изменение типа данных?
нет, такого метода нет

Оказывается есть, нашел вариант
dt.Columns["ФФФ"].DataType = System.Type.GetType("System.Int32");
Все отлично, но проблема с Null

Код: plaintext
Невозможно изменить DataType столбца, т.к. он содержит данные.


Модератор: Тема перенесена из форума "C#.NET".
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #35855039
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: plaintext
Невозможно изменить DataType столбца, т.к. он содержит данные.
[/color
я о том же, нельзя это сделать на dataTable 'е с данными.
...
Рейтинг: 0 / 0
Поменять тип данных колонки DataTable
    #36001833
-loco-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не проще сделать преобразования типа при вводе? Тогда можно сразу и проверку на целочисленность сделать.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Поменять тип данных колонки DataTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]