I am using the newest EF core (3.1.8).
My goal is to concatenate a subquery table that returns string into one single string, I don't want SQL Server to return cloned row data by subquery rows.
I've tried this:
string.Join(", ", g.Select(x => x.stranka))
with no success.
This is my code:
var ctx = SindikatDbContext.I;
var q = (from p in ctx.Predmeti
join vrPis in ctx.Maticni_VrstaPismena on p.VrstaPismenaId equals vrPis.Id
join nacOdas in ctx.Maticni_NacinOdasiljanja on p.NacinOdasiljanjaId equals nacOdas.Id into tnacOdas
from nacOdas in tnacOdas.DefaultIfEmpty()
from stranka in (from s in ctx.EntitiesStranke
join osoba in ctx.Maticni_Osobe on s.OsobaId equals osoba.OsobaId into tosoba
from osoba in tosoba.DefaultIfEmpty()
join partner in ctx.Partner on s.PartnerId equals partner.Id into topartner
from partner in topartner.DefaultIfEmpty()
where (int)EntityTypesEnum.pravno_Predmeti == s.EntityTypeId && s.EntityId == p.PredmetId
select partner.Naziv == null ? osoba.Ime + " " + osoba.Prezime : partner.Naziv).DefaultIfEmpty()
group new
{
p,
VrstaPismena = vrPis.Naziv,
NacinOdasiljanja = nacOdas.Naziv,
stranka
} by new
{
p.PredmetId,
p.Identifikator,
p.PoslovniBrojPredmeta,
p.VrstaPismenaId,
p.DatumPrimitka,
p.DatumOdasiljanja,
p.NacinOdasiljanjaId,
VrstaPismena = vrPis.Naziv,
NacinOdasiljanja = nacOdas.Naziv
} into g
select
new { g.Key, stranka = string.Join(", ", g.Select(x => x.stranka)) });
var rezt = q.ToList();
"stranka" is of string type.
This is the thrown exception:
System.InvalidOperationException: 'The LINQ expression '(GroupByShaperExpression:
KeySelector: new {
PredmetId = (p.PredmetId),
Identifikator = (p.Identifikator),
PoslovniBrojPredmeta = (p.PoslovniBrojPredmeta),
VrstaPismenaId = (p.VrstaPismenaId),
DatumPrimitka = (p.DatumPrimitka),
DatumOdasiljanja = (p.DatumOdasiljanja),
NacinOdasiljanjaId = (p.NacinOdasiljanjaId),
VrstaPismena = (m.Naziv),
NacinOdasiljanja = (m.Naziv)
},
ElementSelector:new {
p = (EntityShaperExpression:
EntityType: Predmeti
ValueBufferExpression:
(ProjectionBindingExpression: p)
IsNullable: False
),
VrstaPismena = (ProjectionBindingExpression: VrstaPismena),
NacinOdasiljanja = (ProjectionBindingExpression: NacinOdasiljanja),
stranka = (ProjectionBindingExpression: stranka)
}
)
.Select(x => x.stranka)' 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(). See https://go.microsoft.com/fwlink/?linkid=2101038
for more information.'