使用linq变换对象

本文关键字:对象 变换 linq 使用 | 更新日期: 2023-09-27 17:51:04

A类具有以下属性:

public int A_Id { get; set; }
public IEnumerable<int> B_Ids { get; set; }

包含:

的A的集合

A_Id = 1, b_id = {101,102,103}

A_Id = 2, b_id = {104}

A_Id = 3, b_id = {105,106}

从上面的集合中,我想创建一个新的集合,内容如下:

A_Id = 1, B_Id = 101

A_Id = 1, B_Id = 102

A_Id = 1, B_Id = 103

A_Id = 2, B_Id = 104

A_Id = 3, B_Id = 105

A_Id = 3, B_Id = 106

我怎么用linq来做呢?

问候,迈克

使用linq变换对象

使用SelectMany:

var result = list.SelectMany(a => a.B_Ids.Select(b => new { a.A_Id, B_Id = b }));
class ClassA
{
    public int A_Id { get; set; }
    public IEnumerable<int> B_Ids { get; set; }
}
var newAs = (from a in As from bId in a.B_Ids select new ClassA() {A_Id = a.A_Id, B_Ids = new int[] {bId}});