我有以下课程:
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
答案 0 :(得分:3)
试试这个:
var res = Items.SelectMany(x => x.field1.Select(s => new {field1=s, x.field2}));
您将获得一系列匿名对象,每个对象都包含两个字段 - field1
和field2
。
答案 1 :(得分:1)
我认为这符合其目的:
首先,将您的课程更改为:(两个名称不同)
class Items
{
public string[] field1;
public int field2;
}
class Item
{
public string field1;
public int field2;
}
然后,这个函数将你的第一个类分成两个(或更多)其他类
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