1

私は次のクラスを持っています:

class Item
{
    public string[] field1;
    public int field2;
}

さて、私はアイテムのコレクションを持っています。これらのコレクションをに変換するにはどうすればよいですか

class Item
{
    public string field1;
    public int field2;
}

コレクションの各要素の値Items.SelectMany(x => x.field1)を保存する必要があります。filed2

field1:{"asd","asdf","fscsd"}
field2:123

->

field1:{"asd"}
field2:123

field1:{"asdf"}
field2:123

field1:{"fscsd"}
field2:123
4

2 に答える 2

3

これを試して:

var res = Items.SelectMany(x => x.field1.Select(s => new {field1=s, x.field2}));

それぞれに と の 2 つのフィールドを持つ列挙型の匿名オブジェクトが返されます。field1field2

于 2012-05-12T14:38:34.720 に答える
1

これはその目的を果たしていると思います:

まず、クラスを次のように変更します: (両方とも別の名前)

class Items
{
    public string[] field1;
    public int field2;
}

class Item
{
    public string field1;
    public int field2;
}

次に、この関数は最初のクラスを 2 つ (またはそれ以上) の他のクラスに分割します

public Item[] splitItems(Items item)
{
    Item[] items = new Item[item.field1.length];
    for(int i=0;i<item.field1.length;i++)
    {
        items[i].field1 = item.field1[i];
        items[i].field2 = item.field2;
    }
    return items;
}

Items mainItem = new Items();
mainItem.field1 = {"asd","asdf","fscsd"};
mainItem.field2 = 123;

Item[] tempItems = splitItems(mainItem);

これで、次のようになります。

tempItems[0].field1 = "asd";
tempItems[1].field1 = "asdf";
tempItems[2].field1 = "fscsd";

すべての field2 は 123 に等しくなります

于 2012-05-12T14:54:12.227 に答える