Получить информацию, относящуюся к пользователю, используя LINQ в списке объектов (комбинированные списки)

У меня есть список фотографий и список альбомов. Я создал один список объектов типа, чтобы объединить их. Сейчас я пытаюсь использовать LINQ, чтобы я мог получать альбомы на основе идентификатора пользователя и фотографий, содержащихся в альбоме.

Может ли кто-нибудь помочь мне понять, как получить вышеупомянутое?

Я использую LINQPAD, чтобы сделать это, поэтому я приложу фото здесь.

введите описание изображения здесь

Всего 2 ответа


Вы не можете получить доступ к свойству из типа object (если только вы не используете Reflection для получения значения свойства в c # ). Так вот почему вы получаете ошибку.

Если вы хотите получить альбомы на основе идентификатора пользователя и фотографий, содержащихся в альбоме, вы можете использовать linq to object как linq to object ниже

var result = (from p in _photos
             join a in _albums on p.AlbumId equals a.Id
             where a.UserId==1
             select new { p.Title, a.Title}).ToList();
// It returns `Anonymous type`

Вы также можете создать один класс для хранения вашего значения, как показано ниже

public class Result
{
    public string AlbumTitle { get; set; }
    public string PhotoTitle { get; set; }
    public string Photo_ThumbnailUrl { get; set; }
    // Any properties as you wish
}

var result = (from p in _photos
                 join a in _albums on p.AlbumId equals a.Id
                 where a.UserId==1
                 select new Result { PhotoTitle = p.Title, AlbumTitle = a.Title, Photo_ThumbnailUrl = p.ThumbnailUrl}).ToList();

Что вам нужно, это объединение :

var query= from photo in _photos
           join album in _albums on photo.AlbumId equals album.ID
           where album.UserId==1
           select new {album, photo};

Есть идеи?

10000