LINQ query works in LinqPad but errors in .NET Application

52 views Asked by At

I have the following LINQ query that is working when I test in LinqPad:

var query =  this._dbContext.SHIPMENT_HEADER
            .Join(
                this._dbContext.SHIPMENT_DETAIL
                h => h.INTERNAL_SHIPMENT_NUM,
                d => d.INTERNAL_SHIPMENT_NUM,
                (a, b) => new { Header = a, Detail = b })
            .Where(s => s.Header.SHIPMENT_ID == shipmentId)
            .GroupBy(g => new { g.Header.INTERNAL_SHIPMENT_NUM, g.Header.ORDER_NUM })
            .Select(x => new
            {
                InternalShipmentNumber = x.Key.INTERNAL_SHIPMENT_NUM,
                OrderNumber = x.Key.ORDER_NUM,
                OrderLines = x.Select(l => new
                {
                    InternalLineNumber = l.Detail.INTERNAL_SHIPMENT_LINE_NUM,
                    LineNumber = l.Detail.ORDER_LINE_NUM ?? 0,
                }),
            }).FirstOrDefault();

But when I move it to a .Net application using EF Core 3.1, I get this error:

{"The LINQ expression '(GroupByShaperExpression: KeySelector: new { 
    INTERNAL_SHIPMENT_NUM = (s.INTERNAL_SHIPMENT_NUM), 
    ORDER_NUM = (s.ERP_ORDER)  },  ElementSelector:new { 
    Header = (EntityShaperExpression: 
        EntityType: SHIPMENT_HEADER
        ValueBufferExpression: 
            (ProjectionBindingExpression: Header)
        IsNullable: False
    ), 
    Detail = (EntityShaperExpression: 
        EntityType: SHIPMENT_DETAIL
        ValueBufferExpression: 
            (ProjectionBindingExpression: Detail)
        IsNullable: False
    )  } )
    .Select(l => new { 
        InternalLineNumber = l.Detail.INTERNAL_SHIPMENT_LINE_NUM, 
        LineNumber = l.Detail.ORDER_LINE_NUM ?? 0
     })' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync()."}

I'm not able to make sense of the error message?

0

There are 0 answers