나는 그것 말하고, 내 코드에서 문제에 직면하고있다 system.int32
system.double
로 변환 할 수 없습니다 캔트, 여기에 내가이 내 코드객체는 '선택 System.Int32'는
입니다 형식으로 변환 할 수 없습니다 4 개의 문자열 변수와 2 개의 정수 변수를 가진 객체. 그것의
객체 말을 내
objectfieldname
변수 i가 올바른 데이터 유형의 모든 변수를 얻고에서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; }
하지만
dataTblFieldNames
변수의 변환 INT에 두 배로, 그래서 난foreach loop
에propertyinfos
에서 문제에 직면하고있다 'System.Double'형식의 'System.Int32'형식으로 변환 할 수 없습니다.
아무쪼록이 문제를 해결할 수 있도록 도와주세요.
어디서 오류가 있습니까? 그것을 어디에서 개조합니까? – Shaharyar
Reflection/LinQ를 썼다는 것을 믿을 수 없으며 이제는 간단한 Int32/double 변환에 문제가 있습니다. 어느 선 이요? – nvoigt
그래서 foreach 루프에서 propertyinfos.setvalue의 문제에 직면하고 있습니다. 'System.Double'형식의 Object가 'System.Int32'형식으로 변환 될 수 없습니다. – user1557020