如何转换linq中的计数?

时间:2016-01-20 08:10:42

标签: c# sql linq

我有一种情况,我想计算客户的总交易量。我可以在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中转换它?

1 个答案:

答案 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。