Я должен был хранить данные в DataTable по какой-то определенной причине и понял, что он не поддерживает типы с возможностью NULL: выбрасывает System.NotSupportedException: DataSet не поддерживает System.Nullable <>. Есть ли лучший эффективный способ преобразования, чем перечисление типов и запись пользовательского кода для каждого типа с нулевым значением?Как преобразовать тип NULL в его базовый тип?
ответ
Но он поддерживает обнуляемые тип, AllowDbNull
является true
по умолчанию:
var table = new DataTable();
table.Columns.Add("NullableInt", typeof(int));
table.Rows.Add(1);
table.Rows.Add(2);
table.Rows.Add(3);
table.Rows.Add((int?)null);
Используйте DataRow
extension methods, которые поддерживают обнуляемые тип, например:
foreach(DataRow row in table.Rows)
{
int? value = row.Field<Int32?>("NullableInt");
// modify the value with SetField:
row.SetField<Int32?>("NullableInt", null);
// or:
row.SetField("NullableInt", (int?)null);
}
Вторая строка генерирует System.NotSupportedException: DataSet не поддерживает System.Nullable <>. – amuliar
@ amuliar: Вы используете [типизированный 'DataSet'] (http://msdn.microsoft.com/en-us/library/esbykkzz.aspx) или обычный' DataSet'/'DataTable'? –
Я только что использовал первый код во вновь созданном приложении. Он генерирует исключение: static void Main (string [] args) { var table = new DataTable(); table.Columns.Add ("NullableInt", typeof (Int32?)); } – amuliar
- 1. преобразовать базовый тип в производный тип
- 2. Как преобразовать производный рекурсивный тип данных в базовый тип данных?
- 3. Преобразование/Литой базовый тип в Производный тип
- 4. Невозможно преобразовать тип выражения null в тип возврата T
- 5. Как преобразовать тип вар в тип строки
- 6. typedef как базовый тип данных
- 7. Как преобразовать ссылочный тип в тип значения?
- 8. Как преобразовать тип id в тип CGPoint?
- 9. как преобразовать встроенный тип в пользовательский тип
- 10. Как преобразовать тип DataRowView в целочисленный тип?
- 11. Как преобразовать тип указателя
- 12. Невозможно преобразовать тип в тип C#
- 13. Базовый тип макетного объекта
- 14. .NET Базовый тип информации?
- 15. Исходный базовый тип определения
- 16. Преобразование Enum в базовый тип
- 17. C++ Динамически преобразовать строку в любой базовый тип
- 18. тип дочернего типа как базовый/родительский тип для сериализации
- 19. Как указать базовый тип перечисления в Rust?
- 20. Как преобразовать тип массива?
- 21. Как преобразовать объект в тип?
- 22. Как преобразовать вложенный тип
- 23. Как преобразовать анонимный тип в сильный тип в LINQ?
- 24. Невозможно преобразовать тип источника в целевой тип
- 25. как преобразовать <T> в его базовый тип для общего метода?
- 26. преобразовать строку в тип XML (тип элемента)
- 27. Преобразовать тип «String» в тип «Name»
- 28. Как преобразовать тип в golang?
- 29. Как преобразовать в тип IList?
- 30. Как преобразовать целочисленный тип в тип суммы в javascript?
Вы можете использовать отражение, чтобы сделать это, но почему бы просто не назначить значение в таблице данных? –