Как мы можем узнать, какой тип данных содержится в DataTable? - PullRequest
0 голосов
/ 16 января 2019

Я хочу проверить тип данных для каждого типа данных Excel. Но когда я проверяю данные Excel, все данные отображаются в виде string type.

C #, OLEDB

  //For validating Datatype
        public List<string> ValidateDataType(DataRow row, List<DataExchangeDefinition> dataExchangeDefinitionList, List<string> dataColumnList)
        {
            //var dataColumnString = String.Join(", ", dataColumnList.ToArray());

            Dictionary<string, Type> types = new Dictionary<string, Type>();
            types.Add("int", typeof(System.Int32));
            //types.Add("int", typeof(System.Int64));
            types.Add("DateTime", typeof(System.DateTime));
            types.Add("decimal", typeof(System.Decimal));
            types.Add("float", typeof(System.Double));
            types.Add("String", typeof(System.String));


            List<string> dataTypeErrorList = new List<string>();
            foreach (DataExchangeDefinition dt in dataExchangeDefinitionList)
            {
                if (dataColumnList.Any(str => str == dt.FieldName))
                {
                    if (!row.IsNull(dt.FieldName))
                    {
                        var dat = row[dt.FieldName];
                        var t = row[dt.FieldName].GetType().Name;               
                        var conObj = Convert.ChangeType(dat,types[t]);

                        string error = (from e in row.ItemArray
                                        where conObj.GetType().Name.Contains(dt.DataType) == false
                                        select dt.FieldName).DefaultIfEmpty("").FirstOrDefault();
                        if (error != "")
                        {
                            dataTypeErrorList.Add(error);
                        }
                    }                                        
                }
            }

            return dataTypeErrorList;
        }

В результате я передаю его в виде списка. Список содержит имена столбцов ошибок. Проверка выполняется с использованием Linq

Вот данные Excel, которые я импортировал

Это данные в базе данных. Здесь я добавил число 2 вместо строки. Но это на самом деле принимает как строку. Но здесь я хочу определить как int , иначе моя проверка не удастся. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...