2010-10-13 69 views
2

在我的父子情景中,我需要獲取所有客戶的自定義列表及其訂單和訂購項目的總數。Linq查詢獲取子女的孩子記錄

客戶可以有許多訂單,訂單可以有很多訂單項。我需要編寫一個查詢將返回我的實體對象的集合,其具有客戶實體和總訂單和總的OrderItems爲客戶對象e.g

var result = from c in ctx.Customers 
     from o in ctx.Orders 
     from d in ctx.OrderItems 
     select new List<CustomerVM() 
     { 
      customer = c, 
      totalOrders = o.Count, 
      totalOrderItems = XXXX 
     } 
public class CustomerVM { 
public Customer customer {get; set;} 
public int totalOrders {get; set;} 
public int totalOrderItems {get; set;} 
} 

我怎樣才能做到這一點?

回答

3

您需要使用SelectMany

var result = (from c in ctx.Customers 
       select new CustomerVM 
       { 
        customer = c, 
        totalOrders = c.Orders.Count(), 
        totalOrderItems = c.Orders.SelectMany(o => o.OrderItems).Count() 
       }).ToList(); 
+0

感謝您的及時答覆。我收到以下錯誤 無法將方法組'Count'轉換爲 上的非委託類型'int'c.Orders.SelectMany(o => o.OrderItems).Count – Jhelumi 2010-10-13 13:38:04

+0

對不起,只需使用括號:'Count( )'而不是'Count' – Yakimych 2010-10-13 13:46:12

+0

謝謝你。我在SL4中運行它,但它沒有返回任何結果。當我調試它時,我得到了空值作爲結果,雖然有4個客戶也有一些訂單。 任何想法,爲什麼呢? ctx是DomainContext – Jhelumi 2010-10-13 14:53:33