分解集合并保存一些字段
本文关键字:字段 保存 集合 合并 分解 | 更新日期: 2023-09-27 18:33:54
我有以下类:
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
试试这个:
var res = Items.SelectMany(x => x.field1.Select(s => new {field1=s, x.field2}));
您将获得一个匿名对象的枚举,每个对象有两个字段 - field1
和 field2
。
我认为这达到了它的目的:
首先,将类更改为:(两者都是不同的名称)
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";
他们所有的字段2将等于123