-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 に答える