如何将List的项复制到LINQ中的对象?

时间:2012-12-15 06:02:55

标签: c# linq

我有一个这样的清单:

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

3 个答案:

答案 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