簡體   English   中英

Asp.net 內核 REST API Z979E08FD891EBB5526A70C82D741A40Z 表達式不能翻譯

[英]Asp.net Core REST API The LINQ expression Could not be Translated

Asp.net REST API,無法翻譯 Z979E08FD891EBB5526A70C82D741A40Z 表達式。 以可翻譯的形式重寫查詢,或通過插入對“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的調用顯式切換到客戶端評估

    var query = from orders in DbContext.JobOrders where orders.OrderStat == 1
                            join users in DbContext.users on orders.Uid equals users.Uid into ousers
                            from onusers in ousers.DefaultIfEmpty()
                            join customers in DbContext.customers on orders.Uid equals customers.Uid into offlinecustomers
                            from offusers in offlinecustomers.DefaultIfEmpty()
                            join orderitems in DbContext.OrderItems on orders.Eid equals orderitems.OrderId into orderitems
                            from orderitem in orderitems.DefaultIfEmpty().GroupBy(i => i.OrderId).Select(g => new { qty = g.Sum(s => s.Qty == null ? 0 : s.Qty) })
                            select new
                            {
                                Eid = orders.Eid,
                                Uid = orders.Uid,
                                OrderStat = orders.OrderStat,
                                Name = onusers.Name == null ? offusers.Name : onusers.Name,
                                Contact = onusers.Contact == null ? offusers.Contact : onusers.Contact,
                                Qty = orderitem.qty
                            };

如果我刪除包含 group by 子句的 orederitems 表查詢,則代碼可以正常工作。

完全相同的代碼在 asp.net 中工作,並在我移至 asp.net 內核時停止工作。

請幫忙

嘗試以下操作:

var query = (from orders in DbContext.JobOrders where orders.OrderStat == 1
                            join users in DbContext.users on orders.Uid equals users.Uid into ousers
                            from onusers in ousers.DefaultIfEmpty()
                            join customers in DbContext.customers on orders.Uid equals customers.Uid into offlinecustomers
                            from offusers in offlinecustomers.DefaultIfEmpty()
                            join orderitems in DbContext.OrderItems on orders.Eid equals orderitems.OrderId into orderitems
                            from orderitem in orderitems.DefaultIfEmpty()
                            select new {orderitem = orderitem, users = users, onusers = onusers, offusers = offusers}
                            ).GroupBy(i => i.orderitem.OrderId)
                            .Select(g => new { 
                                orderId = g.Key,
                                qty = g.orderitem.Sum(s => s.qty == null ? 0 : s.qty),
                                Eid = g.orders.FirstOrDefault().Eid,
                                Uid = g.orders.FirstOrDefault().Uid,
                                OrderStat = g.orders.FirstOrDefault().OrderStat,
                                Name = g.onusers.FirstOrDefault().Name == null ? g.offusers.FirstOrDefault().Name : g.onusers.FirstOrDefault().Name,
                                Contact = g.onusers.FirstOrDefault().Contact == null ? g.offusers.FirstOrDefault().Contact : g.onusers.FirstOrDefaut().Contact
                            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM