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?