2009-09-19 55 views
-1

我有一個表包含客戶列表,第二個表包含我的客戶下的訂單和第三個包含訂單行項目的表。Linq查詢檢索:Customers,Orders和OrderLineItems

我希望能夠使用Linq查詢來獲取客戶名稱,訂單數量和該客戶所有訂單的總價值。

假設下面的數據:

[Customers] 
CustomerId Name 
--------------------- 
1   Bob Smith 
2   Jane Doe 

[Orders] 
OrderId CustomerId 
--------------------- 
1  1 
2  1 
3  2 

[OrderLineItems] 
LineItemId OrderId UnitPrice Quantity 
-------------------------------------------- 
1   1  5   2 
2   1  2   3 
3   2  10   10 
4   2  4   2 
5   3  2   5 

我想以下結果:

Name  OrdersCount TotalValue 
-------------------------------------------- 
Bob Smith 2   124 
Jane Doe 1   10 

什麼是LINQ查詢得到這個結果呢?

+0

你應該指定是否你的意思是linq2sql,EF或LINQ到對象 – AndreasN 2009-09-19 17:45:56

+0

我使用Subsonic作爲我的存儲庫和Ling來查詢它 – desautelsj 2009-09-20 03:43:51

回答

1

如果你相信你有一個強類型的DataContext和部分一流的客戶,您可以自由添加到,我會解決這個問題是這樣的:

public partial class Customer { 

    public int NumberOfOrders { 
     get { return Orders.Count(); } 
    } 

    public int TotalValue { 
     get { return Orders.OrderLineItems.Sum(o => o.UnitPrice * o.Quantity); } 
    } 
} 

YourDataContext db = new YourDataContext(); 

var query = from c in db.Customers 
select new {c.Name, c.NumberOfOrders, 
c.TotalValue} 

這將項目中的新匿名類型與你請求的數據。