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

linq中视图模型返回数据列表

  •  0
  • user1037747  · 技术社区  · 10 年前

    我有一个视图模型,它包含普通属性和订阅列表的组合

    public class ProjectViewModel
    {
       public String ProjectId { get; set; }
    
       public String Name { get; set; }
    
       public List<Subscriptions> Subscriptions { get; set; }
    
    }
    
    public class Subscriptions
    {
        public long Id { get; set; }
    
        [MaxLength(40)]
        public string ProjectId { get; set; }
    
        public string SubscriptionId { get; set; }
    }
    

    现在我想在视图模型中收集数据。我将从DB上下文中收集哪些数据,但如何收集订阅列表的数据?

    var result = (from p in DataContext.Project join c in DataContext.Subscriptions
                          on p.ProjectId equals c.ProjectId
                          select new ProjectViewModel { ProjectId = p.ProjectId,
                                                        Name = p.Name
    // List of subscriptions ?
    
    1 回复  |  直到 10 年前
        1
  •  2
  •   ocuenca    10 年前

    你可以做一个 group join :

    var query=from p in DataContext.Project 
              join c in DataContext.Subscriptions on p.ProjectId equals c.ProjectId into subs
              select new ProjectViewModel { 
                                            ProjectId = p.ProjectId,
                                            Name = p.Name,
                                            Subscriptions=subs.ToList()
                                          };
    

    但如果你使用 navigation properties 要构建查询:

    var query=from p in DataContext.Project 
              select new ProjectViewModel { 
                                            ProjectId = p.ProjectId,
                                            Name = p.Name,
                                            Subscriptions=p.Subscriptions.ToList()
                                          };