C# 分解集合并保存一些字段。

C# 分解集合并保存一些字段。,c#,linq,collections,C#,Linq,Collections,我有以下课程: class Item { public string[] field1; public int field2; } 我收集了很多东西。如何将这些集合转换为 class Item { public string field1; public int field2; } 我的意思是类似于项目。选择many(x=>x.field1)但我需要为集合中的每个元素保存filed2值 范例 field1:{"asd","asdf","fscsd"} fiel

我有以下课程:

class Item
{
    public string[] field1;
    public int field2;
}
我收集了很多东西。如何将这些集合转换为

class Item
{
    public string field1;
    public int field2;
}
我的意思是类似于
项目。选择many(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

尝试以下操作:

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

您将获得匿名对象的可枚举性,每个对象都有两个字段-
field1
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);
public Item[]拆分项目(Items)
{
Item[]items=新项[Item.field1.length];

对于(int i=0;i我认为这符合其目的:

首先,将您的类更改为:(都是不同的名称)

然后,此函数将第一个类划分为两个(或更多)其他类

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);
public Item[]拆分项目(Items)
{
Item[]items=新项[Item.field1.length];

对于(int i=0;i@svick我可以用循环来做,但这不是一个优雅的解决方案。所以…这就是我为什么问的原因community@svick我可以用循环来做,但这不是一个优雅的解决方案。所以…这就是我问社区的原因