通过 linq 对组执行加入

Performing a join on a group by linq

我正在尝试执行分组依据,然后执行加入(根据此处其他帖子的建议),我在 .NET 5 中收到以下错误

'RelationalProjectionBindingExpressionVisitor' failed. This may indicate either a bug or a limitation in Entity Framework.

代码:

var test = (from ra in _db.ResourceAllocation
                        group ra by new { ra.Date, ra.ResourceId } into g
                        join resource in _db.Resource on g.Key.ResourceId equals resource.Id
                        select new
                        {
                            ResourceName =  resource.Name,
                            ResourceDayOfWeek = resource.DayOfWeek,
                            g.Key.Date,
                            userSum = g.Sum(x => x.userCount)
                        }).OrderByDescending(e => e.Date).ToList();

尝试简化 LINQ Translator 的使用并按部分分隔查询。此查询应该是可翻译的:

var grouped = 
    from ra in _db.ResourceAllocation
    group ra by new { ra.Date, ra.ResourceId } into g
    select new 
    {
        g.Key.Date,
        g.Key.ResourceId,
        userSum = g.Sum(x => x.userCount)
    }

var query =
    from g in grouped
    join resource in _db.Resource on g.ResourceId equals resource.Id
    select new
    {
        ResourceName = resource.Name,
        ResourceDayOfWeek = resource.DayOfWeek,
        g.Date,
        g.userSum
    );
    
var result = query.OrderByDescending(e => e.Date).ToList();