У меня есть вопрос (q) со многими ответами, каждый ответ имеет различные тексты, различающиеся по языку. Я хочу написать запрос, чтобы вернуть все ответы на заданном языке (Lang), но мне сложно разобраться ... вот что я пытаюсь:
List<string> Answers = q.Answers
.Select(x => x.Texts.Where(l => l.Language.ISO == Lang).Select(t => t.Value))
.ToList();
, который генерирует:
Cannot implicitly convert type 'System.Collections.Generic.List<System.Collections.Generic.IEnumerable<string>>' to 'System.Collections.Generic.List<string>'
возможно, у меня не может быть выбора внутри выбора ... и:
List<string> Answers = q.Answers
.Select(x => x.Texts.Where(l => l.Language.ISO == Lang))
.Select(t => t.Value)
.ToList();
где я бы подумал, что первый выбор возвращает текст, что означает, что второй выбор может найти его. Значение ... но, нет:
'System.Collections.Generic.IEnumerable<Website.Models.Text>' does not contain a definition for 'Value' and no extension method 'Value' accepting a first argument of type 'System.Collections.Generic.IEnumerable<Website.Models.Text>' could be found (are you missing a using directive or an assembly reference?)
... возможно, я близко, но не могу понять. как это сделать?
- Правка -
кредит здесь идет к SLaks. Вот последнее утверждение:
List<string> Answers = q.Answers
.SelectMany(x => x.Texts)
.Where(x => x.Language.ISO == Lang)
.Select(x => x.Value)
.ToList();