SQL 在 LINQ 结构中使用 Group By 和 Having Clause 进行查询

SQL query with Group By and Having Clause in LINQ structure

如何在 LINQ (c# EF6) 中编写此查询?

有人可以帮我吗 - 我是 Entity Framework 结构的新手 - 我很难使用不同的子句

SELECT 
    sum(remainingamount) TotalSiteCreditAmount,
    max(expirationutcdatetime) MaxExpiryDate
FROM 
    WholesaleCredits
WHERE 
    ExpirationUTCDateTime > Getdate()
GROUP BY 
    registeredcustomerid,
    siteid
HAVING 
    registeredcustomerid = :registeredCustomerId
    AND siteid = :siteId

目前已尝试以下操作:

var data =  context.WholesaleCredit
                .Where(x => x.ExpirationUTCDateTime > DateTime.Now)
                .GroupBy (x => x.RegisteredCustomerId)

代码中使用的实体:

 public partial class WholesaleCredits
    {
        public virtual int Id { get; set; }
        public virtual decimal CreditAmount { get; set; }
        public virtual decimal RemainingAmount { get; set; }
        public virtual Site Site { get; set; }
        public virtual DateTime GeneratedUTCDateTime { get; set; }
        public virtual DateTime ExpirationUTCDateTime { get; set; }
        public virtual int RegisteredCustomerId { get; set; }
    }

这里不需要 HAVING,分组应该由常量提供,因为分组键有过滤器:

var data = context.WholesaleCredit
    .Where(x => x.ExpirationUTCDateTime > DateTime.Now && x.RegisteredCustomerId == registeredCustomerId && x.Site.Id == siteid)
    .GroupBy(x => 1)
    .Select(g => new 
    {
        TotalSiteCreditAmount = g.Sum(x => x.RemainingAmount),
        MaxExpiryDate = g.Max(x => x.ExpirationUTCDateTime)
    })
    .First();