0

できるだけ短く、私は持っています:

class X
{
     int p1;
     int p2;
     int p3;
     string p4;
}
class Y
{
     int a1;
     int a2;
     string a3;
     string a4;
}
list<X> XLIST;
list<Y> YLIST;

これを短くしたい:

foreach (X x in XLIST)
{
    Y y=new Y();
    //  arbitrary conversion
    y.a1=x.p1;
    y.a2=x.p2-x.p1;
    y.a3=x.p3.ToString();
    y.a4=x.p4.Trim();
    YLIST.Add(y);
}
4

2 に答える 2

3

これが欲しいですか?

YLIST = XLIST.Select(x => new Y 
{ 
    a1 = x.p1, 
    a2 = x.p2, 
    a3 = x.p3.ToString(), 
    a4 = x.p4.Trim() 
}).ToList();

(タグ付けしたように)ラムダを使用し、(非常に)わずかに短くなっています...

于 2010-10-17T00:28:45.180 に答える
2

フィールドにアクセスできると仮定します。

List<X> XLIST = ...;
List<Y> YLIST = XLIST.Select(x => new Y()
                                  {
                                      a1=x.p1,
                                      a2=x.p2-x.p1,
                                      a3=x.p3.ToString(),
                                      a4=x.p4.Trim(),
                                  })
                     .ToList();
于 2010-10-17T00:28:59.780 に答える