Я хочу проверить тип данных для каждого типа данных 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](https://i.stack.imgur.com/3JH92.png)