Есть вот такой метод:
Dictionary<string, string> GetColumnsList(OleDbConnection conn, string tableName)
{
var columns = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new[] { null, null, tableName, null });
return columns.AsEnumerable().
Select(x => new
{
ColumnName = x.Field<string>("Column_Name"),
Description = $"Data_Type:{ x.Field<int>("Data_Type")};"+
$"IsNullable:{ x.Field<bool>("IS_NULLABLE")};"+
$"CharacterMaximumLength: { x.Field<int?>("Character_Maximum_Length")};"+
$"CharacterOctetLength: { x.Field<int?>("Character_Octet_Length")}"
}).ToDictionary(key => key.ColumnName, value => value.Description);
}
Так вот, не могу понять, почему вылетает исключение при попытке использовать int?
.
Сами по себе колонки в DataTable имеют тип int.
System.InvalidCastException: 'Specified cast is not valid.'
at
System.Data.DataRowExtensions.UnboxT1.NullableField[TElem](Object
value) at System.Data.DataRowExtensions.Field[T](DataRow row,
String columnName) at
AccessToMySql.Classes.AccessReader.<>c.<GetColumnsList>b__5_0(DataRow
x) in
D:\Projects\AccessToMySql\AccessToMySql\Classes\AccessReader.cs:line
52 at
System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext()
at
System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1
source, Func
2 keySelector, Func2 elementSelector,
IEqualityComparer
1 comparer) at
System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable1
source, Func
2 keySelector, Func`2 elementSelector) at
AccessToMySql.Classes.AccessReader.GetColumnsList(OleDbConnection
conn, String tableName) in
D:\Projects\AccessToMySql\AccessToMySql\Classes\AccessReader.cs:line
51 at AccessToMySql.Classes.AccessReader.ProcessingMdb(String
pathToMdb) in
D:\Projects\AccessToMySql\AccessToMySql\Classes\AccessReader.cs:line
37 at AccessToMySql.Classes.AccessReader.Read() in
D:\Projects\AccessToMySql\AccessToMySql\Classes\AccessReader.cs:line
26 at AccessToMySql.Program.Main(String[] args) in
D:\Projects\AccessToMySql\AccessToMySql\Program.cs:line 17
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
отображаются кракозябры при выводе потока(текст русский)Пытался преобразовать в стандартную кодировку для ОС(последние 3 строки) и вывести,...
Мне нужно создать Мобильное приложение, которое открывает бинарный файл и записывает данные в массивРешил выбрать Xamarin для этого дела
Пробовал через SimpleImpersonation: https://githubcom/mj1856/SimpleImpersonation, ни в какую не получается