2016-03-28 61 views
0

返回數據的名單我有一個包含訂閱視圖模型在LINQ

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

現在我想收集視圖模型數據的正常性和列表的組合視圖模型。我將從數據庫上下文收集哪些內容,但是如何收集訂閱列表的數據?

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 ? 
+0

'group'你''由C' ProjectId'。 –

回答

2

你可以做一個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() 
             }; 
+0

在使用它之後,它爲我打開了另一個問題.... 'ObjectContent'1'類型未能序列化內容類型'application/json;的OData = minimalmetadata;流= TRUE; charset = utf-8'。「,」type「:」System.InvalidOperationException「,」stacktrace「:」「,」internalexception「:{」message「:」導航屬性'Subscription'找不到導航工廠在實體集「項目」上鍵入「SSAStatusService.Domain.ViewModel.ProjectViewModel」。嘗試調用EntitySetConfiguration上的HasNavigationPropertyLink。\ r \ n參數名稱:navigationProperty – user1037747

+0

好吧,這與Odata使用的序列化程序有關。我沒有太多使用該技術的經驗,但我會建議爲訂閱創建一個ViewModel類,以避免導航屬性出現此問題並獲取您需要的數據。如果我找到另一個答案,我會告訴你,但如果你喜歡,你可以創建一個新的問題,我幾乎可以肯定你可以修復配置OData。 – octavioccl

+0

好的謝謝...... – user1037747