-1

私は以下のように1つのクラスを持っています:

public class test
{    
     int i;

     string str;

     Socket s;

     DateTime dt;
}

以下のようにこのクラスのオブジェクトを作成しています

public void collection()
{

   test t1=new test{i=1,str="string1", s=soc1, dt=DateTime.Today() };

   test t2=new test{i=2,str="string2", s=soc2, dt=DateTime.Today() };

   test t3=new test{i=3,str="string3", s=soc3, dt=DateTime.Today() };

   ArraList a=new ArrayList();

   a.Add(t1);

   a.Add(t2);

   a.Add(t3);

}

t1これらすべてのオブジェクト ( 、t2t3) を配列に追加しています。さて、linqを使用してオブジェクト配列内のすべてのソケットメンバーを取得するにはどうすればよいですか???

4

3 に答える 3

2

.Net Framework 2.0 以降で作業している場合は、ArrayList の代わりにGeneric Listを使用する必要があります。(クラス外からアクセスできるようにするには、フィールドを public として定義する必要があります)

List<test> list = new List<test>();
list.Add(t1);
....

あなたができるすべてのアイテムを取得するには:

var items = list.Select(r=> r.s).ToArray();

コードには他にも多くの問題があります。DateTime.Todayメソッドのように使用されますが、単なるプロパティです。ArrayList を使用する場合、クラスと修正されたコードは次のようになります。

public class test
{
    public int i;
    public string str;
    public Socket s;
    public DateTime dt;
}


test t1 = new test { i = 1, str = "string1", s = soc1, dt = DateTime.Today };
test t2 = new test { i = 2, str = "string2", s = soc2, dt = DateTime.Today };
test t3 = new test { i = 3, str = "string3", s = soc3, dt = DateTime.Today };

ArrayList a = new ArrayList();
a.Add(t1);
a.Add(t2);
a.Add(t3);

ArrayList からソケットを選択するには

var items = a.Cast<test>().Select(r=> r.s).ToArray();
于 2013-01-11T10:49:27.597 に答える
0

この方法でそれを行うことができます (これには test の public プロパティが必要です):

var a = new List<test>()
{
    new test{i=1,str="string1", s=soc1, dt=DateTime.Today() },
    new test{i=2,str="string2", s=soc2, dt=DateTime.Today() },
    new test{i=3,str="string3", s=soc3, dt=DateTime.Today() }

};

var sockets = a.Select(t => t.s);
于 2013-01-11T10:54:17.277 に答える
0

ArrayList を「test」型のコレクションにキャストする必要があると思います

それで

a.Cast<test>.Select(t => t.s);

結果を出します。

または、ArrayList に他のタイプのオブジェクトも含まれている可能性があると思われる場合は、次を使用できます。

a.OfType<test>.Select(t => t.s);

注: Socket がパブリックにアクセス可能なプロパティであることを確認し、使用するフレームワークによっては、ジェネリック コレクションの使用を検討してください。

于 2013-01-11T10:51:52.233 に答える