2009-09-19 56 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} 

这将项目中的新匿名类型与你请求的数据。