从列表中获取项目并将其内部列表放入一个列表中?

时间:2012-07-24 08:57:04

标签: c# linq list

我有一个清单

public class Org
{
  public string Name;
  public List<OrgPost> OrgPostCollection= new List<OrgPost>();
}

public class OrgPost
{
  public string OrgPostTitle;
}

并且:

List<Org> OrgCollection=//GetAll(Org);

现在我有一个像这样的组织列表

   [Name,OrgPostCollection]
   [Name2,OrgPostCollection2]
   ...

但我需要这样的东西:

   [Name1,OrgPostCollection[0]]
   [Name1,OrgPostCollection[1]
   [Name2,OrgPostCollection[0]]
   [Name2,OrgPostCollection[1]]
   ...

1 个答案:

答案 0 :(得分:2)

您可以执行嵌套选择:

   var flatEnumerable = from o in OrgCollection
                        from p in o.OrgPostCollection
                        select new Tuple<Org, OrgPost>(o, p);

然后,您可以在select投影您想要的任何内容,我投射Tuple<Org, OrgPost>

结果flatEnumerableIEnumerable<Tuple<Org, OrgPost>>,然后您可以调用ToListToArray将可枚举解析为列表或数组:

List<Tuple<Org, OrgPost>> flatList = flatEnumerable.ToList();
Tuple<Org, OrgPost>[] flatArray = flatEnumerable.ToArray();