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.