-2

我有一个这样的列表:

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];
4

3 回答 3

2

你可以试试这个:

        MyClass s = new MyClass();
        int j = 0;
        s.GetType().GetProperties().ToList().ForEach(x => { x.SetValue(s, mylist[j++], null); });
于 2012-12-16T03:00:14.580 回答
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()
};
于 2012-12-15T06:21:53.467 回答
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++; });

你可以参考这个

于 2012-12-15T17:41:51.873 回答