我有一个这样的清单:
List<object> myList=new List<object>();
myLists items:
obj1
obj2
obj3
并有一个班级:
Class MyClass
{
public object cObj1{get;set;}
public object cObj2{get;set;}
public object cObj3{get;set;}
}
现在我需要将myList复制到MyClass的对象中:
myClass.cObj1=myList[0];
myClass.cObj2=myList[1];
myClass.cObj3=myList[2];
答案 0 :(得分:2)
你可以试试这个:
MyClass s = new MyClass();
int j = 0;
s.GetType().GetProperties().ToList().ForEach(x => { x.SetValue(s, mylist[j++], null); });
答案 1 :(得分:1)
如果您可以区分列表项:
var result = new MyClass(){
cObj1 = myList.Where(item=> item.SomeProprty == someValue).FirstOrDefault()
,cObj2 = myList.Where(item=> item.SomeProprty == someValue).FirstOrDefault()
,cObj3 = myList.Where(item=> item.SomeProprty == someValue).FirstOrDefault()
};
答案 2 :(得分:0)
MyClass s = new MyClass();
PropertyInfo[] p = s.GetType().GetProperties();
int i=0;
foreach (PropertyInfo prop in p)
{
prop.SetValue(s, mylist[i++], null);
}
当你无法区分这些项目并且不知道列表中有多少项目时,你可以通过这种方式实现它。
以下代码段不起作用
var v = p.Select(obj=> { obj.SetValue(s, mylist[i], null); i++; });
你可以参考this。