listlinqarraylistlinqpadtobjectlist

Get information relevant to user using LINQ on Object list ( Combined lists )


I have a list of photos and a list of Albums. I created one single List of type object to combine them. Now I'm trying to use LINQ so that I can retrieve albums based on userId and the photos contained inside the album.

Could anyone help me in understanding how to retrieve the above?

I'm using LINQPAD in order to do that, so I will attach a photo here.

enter image description here


Solution

  • You can not access the property from object type (Unless you use Reflection to get property value in c#). So that is the reason why you are getting the error.

    If you want to retrieve albums based on userId and the photos contained inside the album, you can use linq to object like below

    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`
    

    You can also create one class to store your value like below

    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();