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

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

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

Для этого я использую LINQPAD, поэтому я приложу сюда фотографию.

enter image description here

Ответы [ 2 ]

1 голос
/ 16 января 2020

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

Если вы хотите получать альбомы по идентификатору пользователя и фотографиям, содержащимся в альбоме, вы можете использовать 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();
1 голос
/ 16 января 2020

Вам нужно присоединиться :

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