LINQ, non può unirsi alla stringa

Ho una lista di utenti, ogni utente ha una lista di domande. Nella mia lista di modelli di domande dovrebbe essere in stringa tramite virgola. Cerco:

public List SurveyReportList() { var q = from i in _dbContext.Users where i.UserId != null select new ITW2012Mobile.ViewModels.AdminSurveyReportModel() { FirstName = i.FirstName, LastName = i.LastName, Question4 = String.Join(", " , (from a in _dbContext.MultipleQuestions where a.MultipleQuestionType.KEY == MultipleQuestionKeys.BENEFITS select a.Question).ToArray()) }; return q.ToList(); } public class AdminSurveyReportModel { public string FirstName { get; set; } public string LastName { get; set; } public string Question4 { get; set; } } 

certo, ottengo errore:

LINQ to Entities non riconosce il metodo “System.String Join (System.String, System.String [])” e questo metodo non può essere tradotto in un’espressione di archivio.

Come ottenerlo correttamente?

Suggerirei di eseguire la string.Join localmente utilizzando invece AsEnumerable :

 var q = from i in _dbContext.Users where i.UserId != null select new { FirstName = i.FirstName, LastName = i.LastName, Question4Parts = _dbContext.MultipleQuestions .Where(a => a.MultipleQuestionType.KEY == MultipleQuestionKeys.BENEFITS) .Select(a => a.Question) }; return q.AsEnumerable() .Select(x => new ITW2012Mobile.ViewModels.AdminSurveyReportModel { FirstName = x.FirstName, LastName = x.LastName, Question4 = string.Join(", ", x.Question4Parts) }) .ToList(); 

non può includere string.Join () nella proiezione iniziale, perché il traduttore LINQ non lo supporta. Posso scrivere un traduttore personalizzato per questo?

Prova a utilizzare il metodo Aggregazione .

 Question4 = (from a in _dbContext.MultipleQuestions where a.MultipleQuestionType.KEY == MultipleQuestionKeys.BENEFITS select a.Question).ToArray().Aggregate((x,y) => x + "," + y) 

Non ho provato