代码之家  ›  专栏  ›  技术社区  ›  user3021830

展平其属性之一是另一个对象列表的列表

  •  5
  • user3021830  · 技术社区  · 9 年前

    public class Owner
    {
        public string Id { get; set; }
        public string Name { get; set; }
    }
    public class Main
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public List<Owner> Owners { get; set; }
    }
    

    List<Main> 到 List<FlatList> 平面列表在哪里

    public class FlatList
    {
            public string Id { get; set; }          // Id from Main
            public string Name { get; set; }        // Name from Main
            public string OwnerId { get; set; }     // Id from each Owner in a Main's Owner
            public string OwnerName { get; set; }   // Name from each Owner in a Main's Owner
    }
    

    3 回复  |  直到 9 年前
        1
  •  7
  •   Sergey Berezovskiy    9 年前

    你应该使用 SelectMany

    将序列的每个元素投影到IEnumerable并展平 将结果序列合并为一个序列。

    因此,它将每个主要对象投影到 FlatList 平面列表

    var flatList = mainList.SelectMany(m => 
        m.Owners.Select(o => 
            new FlatList { 
                  Id = m.Id, 
                  Name = m.Name, 
                  OwnerId = o.Id,
                  OwnerName = o.Name
             })).ToList()
    
        2
  •  3
  •   Marc Gravell    9 年前
    List<Main> mainList = ...
    var flatList = (
        from main in mainList
        from owner in main.Owners
        select new FlatList {
            Id = main.Id, Name = main.Name,
            OwnerId = owner.Id, OwnerName = owner.Name
        }).ToList();
    
        3
  •  2
  •   Zein Makki    9 年前

    from m in mainList
    from o in m.Owners
    select new FlatList
    {
       Id  = m.Id,
       Name = m.Name,
       OwnerId = o.OwnerId ,
       OwnerName = o.OwnerName 
    };