Ваше условие «где» не имеет смысла, я даже не думаю, что оно компилируется.
Вы говорите, что ожидаете, что res
будет содержать все вложения. Зачем это? Вы даже не используете Attachment нигде в своем запросе.
Без ваших реальных классов немного сложно предложить правильный путь, но я думаю, что это будет примерно так:
var res = _ctx.DataContext.UserMessage.Where(x => x.UserId == currentUserId)
.SelectMany(m => m.Message.Attachments)
.ToList();
Теперь res
содержит все вложения всех сообщений пользователя с идентификатором currentUserId
.
Я предположил макет класса, подобный этому:
class UserMessage
{
public int UserId {get;set;}
public Message Message {get;set;}
}
class Message
{
public IEnumerable<Attachment> Attachments {get;set;}
// Irrelevant for the query in its current form:
public IEnumerable<UserMessage> UserMessages {get;set;}
}