[LINQ] Master – Detail Same Record(II)
- by JTorrecilla
In my previous post, I introduced my problem, but I didn’t explain the problem with Entity Framework When you try the solution indicated you will take the following error: LINQ to Entities don’t recognize the method 'System.String Join(System.String, System.Collections.Generic.IEnumerable`1[System.String])’ of the method, and this method can’t be translated into a stored expression. The query that produces that error was: 1: var consulta = (from TCabecera cab in
2: contexto_local.TCabecera
3: let Detalle = (from TDetalle detalle
4: in cab.TDetalle
5: select detalle.Nombre)
6: let Nombres = string.Join(",",Detalle )
7: select new
8: {
9: cab.Campo1,
10: cab.Campo2,
11: Nombres
12: }).ToList();
13: grid.DataSource=consulta;
Why is this error happening?
This error happens when the query couldn’t be translated into T-SQL.
Solutions?
To quit that error, we need to execute the query on 2 steps:
1: var consulta = (from TCabecera cab in
2: contexto_local.TCabecera
3: let Detalle = (from TDetalle detalle
4: in cab.TDetalle
5: select detalle.Nombre)
6: select new
7: {
8: cab.Campo1,
9: cab.Campo2,
10: Detalle
11: }).ToList();
12: var consulta2 = (from dato in consulta
13: let Nombes = string.Join(",",dato.Detalle)
14: select new
15: {
16: dato.Campo1,
17: dato.Campo2,
18: Nombres
19: };
20: grid.DataSource=consulta2.ToList();
Curiously
This problem happens with Entity Framework but, the same problem can’t be reproduced on LINQ – To – SQL, that it works fine in one unique step.
Hope It’s helpful
Best Regards