我有一种情况,我想计算客户的总交易量。我可以在mysql查询中执行此操作,但我不知道在linq sql中执行此操作。
select c.name, count(r.custid)
from receipt r left join in cust c on (c.custid=r.custid)
group by r.custid
如何在linq sql中转换它?
答案 0 :(得分:3)
我不会从SQL开始......我首先要考虑你在计算什么,这基本上是与客户匹配的组中的收据记录数。这听起来像你想要的东西:
var query = from customer in db.Customers
join receipt in db.Receipts
on customer.CustomerId equals receipt.CustomerId
into customerReceipts
select new { customer.Name, Count = customerReceipts.Count() };
请注意,与许多"左连接"不同LINQ中的示例,我们不使用customerReceipts.DefaultIfEmpty()
,因为我们只想要计数 - 如果该客户没有收据,则应为0。