Лямбда Включить столбцы с ограничениями - PullRequest
0 голосов
/ 03 мая 2018

У меня есть объект «Свойство», у которого есть дочерние элементы «Заметки» и «Вложения». Я хочу вернуть обратно все «Свойство», все связанные «Заметки», НО только одно поле из «Вложения». Я не хочу возвращать все «Вложения», поскольку они содержат изображения base64, которые являются огромными. Если мне это нужно, я могу получить их через «AttachmentId». вопрос заключается в том, как сузить поля при использовании лямбда-включения. Следующее не работает. Я действительно не хочу создавать длинную инструкцию LINQ

var property = await _context.Property
                .Include(x => x.Notes)
                .Include(x => x.Attachments.Select(y => new PropertyAttachment
                {
                    PropertyId = y.PropertyId,
                    AttachmentId = y.AttachmentId,
                    Type = y.Type,
                    Title = y.Title,
                    Content = ""
                }).ToList())
                .SingleOrDefaultAsync(x => x.PropertyId == key);

1 Ответ

0 голосов
/ 03 мая 2018

Используя select и анонимный тип, вы можете попробовать вот так

var property = _context.Property.Select(x => new 
   { Property = x,
     HMOUnits = x.HMOUnits,
     Notes = x.Notes,
     AttachmendId = new { Id = x.Attachments.Select(z=> z.AttachmentId) }
   })
   .SingleOrDefaultAsync(x =>
        x.Property.ID == key &&
       (RestrictUser(User) ? x.Property.Tenancies.Any(y => y.Assignments.Any(z => z.Tenant.UserID == Convert.ToInt32(User.Identity.Name))) : true) 
   );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...