使用linq转换对象

时间:2013-01-08 17:45:29

标签: c# linq-to-objects

A类具有以下属性:

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

包含以下内容的A集合:

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

A_Id = 2,B_Ids = {104}

A_Id = 3,B_Ids = {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做到这一点?

此致 麦克

2 个答案:

答案 0 :(得分:4)

使用SelectMany

var result = list.SelectMany(a => a.B_Ids.Select(b => new { a.A_Id, B_Id = b }));

答案 1 :(得分:-1)

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}});