【发布时间】:2014-11-26 06:12:36
【问题描述】:
我的代码遇到问题,它告诉system.int32 不能转换为system.double,这是我的代码
我有一个包含 4 个字符串变量和 2 个整数变量的对象。
public class MyObject
{
public int id;
public string name1;
public string name2;
public string name3;
public string name4;
public int id2;
}
/*Converts DataTable To List*/
public static List<TSource> ToList<TSource>(this DataTable dataTable) where TSource : new()
{
var dataList = new List<TSource>();
const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic;
var objFieldNames = (from PropertyInfo aProp in typeof(TSource).GetProperties(flags)
select new { Name = aProp.Name, Type = Nullable.GetUnderlyingType(aProp.PropertyType) ?? aProp.PropertyType }).ToList();
var dataTblFieldNames = (from DataColumn aHeader in dataTable.Columns
select new { Name = aHeader.ColumnName, Type = aHeader.DataType }).ToList();
var commonFields = objFieldNames.Intersect(dataTblFieldNames).ToList();
foreach (DataRow dataRow in dataTable.AsEnumerable().ToList())
{
var aTSource = new TSource();
foreach (var aField in objFieldNames)
{
PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name);
propertyInfos.SetValue(aTSource, dataRow[aField.Name], null);
}
dataList.Add(aTSource);
}
return dataList;
}
在我的 objectfieldname 变量中,我得到了所有具有正确数据类型的变量,但在 dataTblFieldNames 变量中,它会将 int 转换为 double,所以我在 propertyinfos 中遇到问题 foreach loop 它的说法
“System.Double”类型的对象无法转换为“System.Int32”类型。?
有人帮我解决这个问题吗?
【问题讨论】:
-
错误在哪里?你在哪里转换它?
-
我不敢相信您编写了 Reflection/LinQ,而现在您在进行简单的 Int32/double 转换时遇到了问题。哪条线?
-
所以我在 foreach 循环中的 propertyinfos.setvalue 中遇到问题,它说“System.Double”类型的对象无法转换为“System.Int32”类型。?
标签: c# asp.net .net asp.net-mvc