C# 我一生中得到的最糟糕的回答是:-)。也许你首先要明白,你问题中的第一句话和你的实际错误信息所说的不一样。属性的类型为int,数据的类型为double。不合适。您需要转换数据。因为我不知道你想怎么做,我只能把这个小练习留给你。谢谢你,伙计,它很好用。至少有一
C# 我一生中得到的最糟糕的回答是:-)。也许你首先要明白,你问题中的第一句话和你的实际错误信息所说的不一样。属性的类型为int,数据的类型为double。不合适。您需要转换数据。因为我不知道你想怎么做,我只能把这个小练习留给你。谢谢你,伙计,它很好用。至少有一,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我一生中得到的最糟糕的回答是:-)。也许你首先要明白,你问题中的第一句话和你的实际错误信息所说的不一样。属性的类型为int,数据的类型为double。不合适。您需要转换数据。因为我不知道你想怎么做,我只能把这个小练习留给你。谢谢你,伙计,它很好用。至少有一个人正确理解了我的问题。但是有一个问题,为什么在设置期间将其视为double,实际上数据类型仅为int。@user1557020检查来自datatable的值。我想是双倍的。非常感谢,伙计,它工作得很好。至少有一个人正确理解了我的问题。但是有一
我一生中得到的最糟糕的回答是:-)。也许你首先要明白,你问题中的第一句话和你的实际错误信息所说的不一样。属性的类型为int,数据的类型为double。不合适。您需要转换数据。因为我不知道你想怎么做,我只能把这个小练习留给你。谢谢你,伙计,它很好用。至少有一个人正确理解了我的问题。但是有一个问题,为什么在设置期间将其视为double,实际上数据类型仅为int。@user1557020检查来自datatable的值。我想是双倍的。非常感谢,伙计,它工作得很好。至少有一个人正确理解了我的问题。但是有一个问题,为什么在设置期间将其视为double,实际上数据类型仅为int。@user1557020检查来自datatable的值。我想是双倍的。
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;
}
if (propertyInfos.PropertyType == typeof(int))
{
propertyInfos.SetValue(aTSource, Convert.ToInt32(dataRow[aField.Name]), null);
}
Convert.ChangeType(dataRow[aField.Name], propertyInfos.PropertyType)