Ho una domanda come di seguito in .net Core 2.2 con EF.
var data = context.Customer
.GroupJoin(context.Orders, c=> c.Id, o => o.CustoerId, (c, o) => new
{
customer = c,
orders= o
}).Select(s => new
{
s.customer.Name,
s.customer.Id,
AllOrdersRef = s.orders == null ? null : string.Join(", ", s.orders.Select(x => x.UniquRef))
});
Dà Errore
L'espressione LINQ 'Count ()' non può essere tradotta e verrà valutata localmente.
Tutto quello che voglio è un valore separato da virgola in AllOrdersRef. Inoltre non voglio usare ToList ().
È necessario effettuare la query di join
e quindi elaborarne il risultato sul lato client :
var data = (from c in context.Customer
join o in context.Orders on c.Id equals o.CustomerId into subs
from sub in subs.DefaultIfEmpty()
select new
{
c.Id,
c.Name,
UniquRef = sub == null ? null : sub.UniquRef
}).ToList();
var result = data.GroupBy(x => new { x.Id, x.Name }).Select(x => new
{
x.Key.Id,
x.Key.Name,
AllOrdersRef = (x.Count() == 1 && x.First().UniquRef == null) ? null
: String.Join(", ", x.Select(y => y.UniquRef))
});